环境变量以键值对的方式存储,是函数配置的一部分。本文介绍如何通过函数计算控制台、Funcraft工具、SDK三种方式配置环境变量。

通过控制台配置环境变量

  1. 登录函数计算控制台
  2. 在顶部菜单栏,选择地域。
  3. 在左侧导航栏,单击服务/函数
  4. 单击目标服务,找到目标函数。
  5. 单击目标函数操作列的配置
    setting
  6. 添加环境变量键值对,单击提交

    进入目标函数的代码执行页签。

    edit-environment-value
  7. 在代码编辑器中编写代码,代码示例如下。然后单击执行,调试函数。
    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")
    }           
    单击日志查询页签,从打印日志中可以看出环境变量已经创建成功。result

通过Funcraft配置环境变量

您可以通过Funcraft规范中的EnvironmentVariables属性进行配置。

  1. 执行以下代码示例配置函数及环境变量。
    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为python2.7。并且,我们指定了当前目录为CodeUri。在部署时,Funcraft会将CodeUri指定的目录打包上传,可以将依赖放置CodeUri指向的目录。

    函数还配置了名为OSSEndpointBucketName的环境变量,取值分别为oss-cn-hangzhou.aliyuncs.com和fun-local-test

  2. 执行fun deploy部署。
    部署成功后,您可以登录函数计算控制台查看已创建的名为FunDemo的服务、envdemo的函数,且该函数配置了OSSEndpointBucketName这两个环境变量。

通过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']