【问题标题】:How to provide global environment variables to AWS SAM local如何向 AWS SAM local 提供全局环境变量
【发布时间】:2019-09-21 07:46:48
【问题描述】:

在本地运行 sams 测试我的 api 网关并传递环境变量时,我可以运行命令

sam local start-api -n env-vars.json

当环境变量绑定到这样的特定函数时,这很有效

MyFunction:
  Type: AWS::Serverless::Function
  Properties:
    Handler: index.handler
    Runtime: nodejs8.10
    CodeUri: .
    Environment:
      Variables:
        FIRST_BUCKET: !Ref firstBucket
        SECOND_BUCKET: !Ref secondBucket

但是,我目前有这样的全局环境变量

Globals:
  Function:
    CodeUri: .
    Runtime: nodejs8.10
    Environment:
      Variables:
        FIRST_BUCKET: !Ref firstBucket
        SECOND_BUCKET: !Ref secondBucket

如何使用env-var.json 将自定义全局环境变量传递给SAMS? 我希望能够为我的env-var.json 文件做这样的事情

{
  "Globals": {
    "Function": {
      "FIRST_BUCKET": "this-is-my-bucket-name"
    }
  }
}

不幸的是,这不起作用,我在网上找不到任何资源显示正确的语法来实现此行为。

【问题讨论】:

    标签: amazon-web-services aws-sam


    【解决方案1】:

    我明天必须对此进行测试,但通读transform documentation(以及我对 SAM 转换的理解)我希望全局变量只应用于每个函数,而不必重新声明它们。

    因此,您将为每个函数正常生成 env.json: 例如,

    {
      "MyFunction": {
          "FIRST_BUCKET": "this-is-my-bucket-name"
      },
      "MySecondFunction": {
          "SECOND_BUCKET": "this-is-my-second-bucket-name"
      }
    }
    
    

    这将导致您的 lambda 函数具有两个全局变量,但只会覆盖传递的值:

    我的功能:

    • FIRST_BUCKET = "这是我的桶名"
    • SECOND_BUCKET = !Ref secondBucket

    MySecondFunction:

    • FIRST_BUCKET = !Ref firstBucket
    • SECOND_BUCKET = "this-is-my-second-bucket-name"

    请记住,您的函数将在您的函数中使用这两个变量,但您只是覆盖了您从 json 传递的变量。

    【讨论】:

      猜你喜欢
      • 2018-06-14
      • 2020-02-04
      • 2020-07-02
      • 1970-01-01
      • 2021-11-16
      • 2020-03-22
      • 1970-01-01
      • 2017-09-05
      • 1970-01-01
      相关资源
      最近更新 更多