如何向AWS Sam Local提供全球环境变量



在本地运行SAM以测试我的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"
    }
  }
}

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

我明天必须测试,但是阅读转换文档(以及我对SAM变换的理解(,我希望全局变量仅适用于每个功能 - 国家。

因此,您将为每个功能形成正常的env.json:例如,

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

这将导致您的lambda函数具有两个全球群体,但仅覆盖传递的值:

myfunction:

  • first_bucket =" this-is-my-bucket-name"
  • second_bucket =!ref secondbucket

mysecondfunction:

  • first_bucket =!ref firstbucket
  • second_bucket =" this-my-second-bucket-name"

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

最新更新