文档首页 > > Sandbox 调试工具使用指南> Sandbox应用示例> 使用环境变量

使用环境变量

分享
更新时间:2020/05/06 GMT+08:00

如果函数使用环境变量,环境变量的值可以从三种方式传递给Docker容器。按以下优先顺序从这三个源中选择每个环境变量:

  1. 使用--envFile选项指定的环境变量文件。
  2. Shell环境变量。
  3. 在模板文件的功能属性中定义。

在定义环境变量时,请选择优先级较高的定义方式。

HSAM模板

考虑具有两个函数MyFunc1和MyFunc2的HSAM模板示例:

SAMversion: 'v1' 
Resources:
  MyFunc1:
    Type: HEC::Serverless::Function
    Properties:
      Handler: gotest.handler
      Runtime: go1.8.3
      MemorySize: 1024
      Timeout: 30
      Environment:
        Variables:
          TABLE_NAME: my-table
  MyFunc2:
    Type: HEC::Serverless::Function
    Properties:
      Handler: pytest.handler
      Runtime: python2.7
      Environment:
        Variables:
          STAGE: prod
          TABLE_NAME: my-table

环境变量文件

使用invoke命令的--envFile参数来提供一个YAML文件,其中包含您的函数中定义的环境变量的值。

例如文件env.yaml内容如下。

NAME: "John"
LAST_NAME: "Smith"

示例:

$ hss invoke --envFile env.yaml

或在交互模式下,直接输入如下命令执行:

invoke --envFile env.yaml

Shell环境

如果你的shell环境中定义的环境变量映射到你的FunctionGraph函数中的环境变量,它们将被传递给Docker容器。Shell变量全局适用于所有函数。例如,如果两个函数使用一个名为TABLE_NAME的环境变量,则通过shell环境提供的TABLE_NAME值将可用于这两个函数。

以下命令将使TABLE_NAME的值可用于MyFunction1和MyFunction2。

$ TABLE_NAME=mytable hss invoke

Shell和环境变量文件的组合

为了更好的控制,你可以使用shell环境变量和环境变量文件的组合。如果两个地方都定义了一个变量,则文件中的变量将覆盖shell中定义的环境变量。

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问