在本地运行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"
}
}
}
不幸的是,这不起作用,我无法在线找到任何资源来显示实现此行为的正确语法。
答案 0 :(得分:0)
我明天必须测试一下,但是通读transform documentation(以及我对SAM变换的理解)后,我希望将全局变量仅应用于每个函数,而不必重新声明它们。
因此,您将正常使用每个函数形成env.json: 例如,
{
"MyFunction": {
"FIRST_BUCKET": "this-is-my-bucket-name"
},
"MySecondFunction": {
"SECOND_BUCKET": "this-is-my-second-bucket-name"
}
}
这将导致您的lambda函数具有两个全局变量,但只会覆盖传递的值:
MyFunction:
MySecondFunction:
请记住,您的函数将在函数中同时使用两个变量,但是您仅覆盖了从json传递的变量。