您可以使用环境变量,在不修改代码的前提下灵活调整FC函数的行为。环境变量作为函数配置的一部分,以字符串键值对的方式存储,不同函数拥有独立的环境变量。本文介绍环境变量的基本信息、控制台部署方式和示例代码等。
使用场景
- 跨平台或服务部署
同一份代码,在测试环境和生产环境运行时的配置可能存在差异。您可以通过环境变量的方式选择使用不同的OSS的Bucket、数据库或者表格。函数在不同平台部署时无需更改代码。
- 配置密钥
连接数据库的用户名和密码、您的阿里云AccessKey或者其他具有安全敏感性的认证信息都可以通过环境变量设置。
- 配置系统变量
在配置PATH和HOME等目录时能够更灵活地使用系统库。
通过控制台配置环境变量
前提条件
创建函数操作步骤
通过Serverless Devs配置环境变量
前提条件
操作步骤
通过SDK配置环境变量
以Python SDK为例,环境变量的参数为environmentVariables,参数取值以字典形式存储。创建、更新、获取环境变量的示例代码如下。
- 创建环境变量
# coding: utf-8 import fc2 client = fc2.Client( endpoint='your endpoint', accessKeyID='your accessKeyID', accessKeySecret='your accessKeySecret') client.create_service('test') client.create_function( 'test', 'test_env', 'python3', 'main.handler', codeDir='/path/to/code/', environmentVariables={'testKey': 'testValue'}) res = client.get_function('test', 'test_env') print res.data
- 更新环境变量
client.update_function( 'test', 'test_env', 'python3', 'main.handler', codeDir='/path/to/code/', environmentVariables={'newKey': 'newValue'}) res = client.get_function('test', 'test_env') print res.data
- 获取环境变量
resp = client.get_function('test', 'test_env') env = func['environmentVariables']
在代码中使用环境变量
假设配置的环境变量为{"key":"val"}
,以下为各运行环境读取并打印此环境变量值的方法。
var value = process.env.key console.log(value)
import os value = os.environ.get('key') print(value)
System.out.println("value: "+ System.getenv("key"));
$value = getenv('key');
Console.WriteLine(Environment.GetEnvironmentVariable("key"));
使用限制
- 字符集规则
- Key的字符集:必须以大小写字母开头,只能包含大小写字母、数字。
- Value的字符集:必须是可显示的ASCII字符,不能包含中文等其他字符。
- 大小限制
所有环境变量的大小不能超过4 KB。
- 系统预留环境变量
为避免系统混淆,设置环境变量时,您不能使用系统预留的环境变量FC_*、accessKeyID、accessKeySecret、securityToken和topic。
您可以使用以下系统环境变量:- FC_FUNC_CODE_PATH:代码部署目录。
- FC_FUNCTION_MEMORY_SIZE:函数内存大小,单位为MB。
安全性
创建或者更新环境变量时,函数计算会对您的环境变量使用AES256(Advanced Encryption Standard 256)标准加密存储,在初始化函数实例时,会将环境变量解密后注入到函数实例环境中。