在本地运行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传递的变量。