环境变量以键值对的方式存储,是函数配置的一部分。本文介绍如何通过函数计算控制台、Funcraft工具、SDK三种方式配置环境变量。
通过控制台配置环境变量
- 登录函数计算控制台。
- 在顶部菜单栏,选择地域。
- 在左侧导航栏中,单击服务及函数。在服务列表区域,单击目标服务。
- 在函数列表页签,单击目标函数操作列的修改配置。
- 在环境变量区域单击键值,添加环境变量键值对,单击提交。
单击提交后进入目标函数的代码执行页签。
- 在代码编辑器中编写代码,代码示例如下。然后单击执行,调试函数。
module.exports.handler = function(event, context, callback) {
var bucket_name = process.env['BUCKET_NAME']
var table_name = process.env['TABLE_NAME']
console.log('BUCKET_NAME: ',bucket_name)
console.log('TABLE_NAME: ',table_name)
callback(null, "success")
}
单击
日志查询页签,从打印日志中可以看出环境变量已经创建成功。
通过Funcraft配置环境变量
您可以通过Funcraft规范中的EnvironmentVariables属性进行配置。
- 执行以下代码示例配置函数及环境变量。
ROSTemplateFormatVersion: '2015-09-01'
Transform: 'Aliyun::Serverless-2018-04-03'
Resources:
FunDemo:
Type: 'Aliyun::Serverless::Service'
envdemo:
Type: 'Aliyun::Serverless::Function'
Properties:
Handler: index.handler
CodeUri: ./
Runtime: python2.7
EnvironmentVariables:
OSSEndpoint: oss-cn-hangzhou.aliyuncs.com
BucketName: fun-local-test
以上示例的含义是:声明一个名为FunDemo的服务,并在这个服务下,再声明一个名为envdemo的函数,配置函数入口为index.handler,以及函数的runtime为Python
2.7。并且,我们指定了当前目录为CodeUri。在部署时,Funcraft会将CodeUri指定的目录打包上传,可以将依赖放置CodeUri指向的目录。
函数还配置了名为OSSEndpoint、BucketName的环境变量,取值分别为oss-cn-hangzhou.aliyuncs.com和fun-local-test
- 执行fun deploy部署。
部署成功后,您可以登录
函数计算控制台查看已创建的名为FunDemo的服务、envdemo的函数,且该函数配置了
OSSEndpoint、
BucketName这两个环境变量。
通过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', 'python2.7', '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', 'python2.7', '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']