如何使用sam build注入环境变量

3

我正在使用AWS SAM。
我创建了一个包含以下条目的samconfig.toml文件:

[default.build.parameters]
container_env_var_file = "envDefault.json"

当我执行 sam build 命令时,我在 .aws-sam/build.toml 文件中看到了来自 envDefault.json 的 env 值。
但是当我检查模板文件 .aws-sam/build/template.yaml 时,我看到的是原始值,而不是我在 envDefault.json 中覆盖的值。
对于每个我要部署到的环境,最好的方式是使用 env 变量的覆盖值进行 sam deploy 部署。
我正在尝试避免在部署过程中手动输入参数。
1个回答

1

看起来您正在尝试设置构建参数而非部署参数。

AWS SAM toml文件中所有构建参数部分都以[default.build.parameters]开头。

而对于覆盖部署参数的情况,您需要使用[default.deploy.parameters]部分(默认代表默认配置文件)。

因此在您的情况下,应该是这样的。

[default.deploy.parameters]
parameter_overrides = "ParamKey=\"ParamValue\""

或者您可以使用命令行。

sam deploy --parameter-overrides

但如果你想在环境中获取一些值来支持你的lambda函数,我强烈建议使用参数存储。


我正在尝试指定每个部署配置文件所对应的环境变量值,以覆盖template.yaml中的环境变量值 - 而不是参数。https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-environment.html - Itay Moav -Malimovka
@ItayMoav-Malimovka 您可以使用这些参数传递您的环境,以便覆盖 template.yaml 中的值。如果您有许多变量,例如不同环境的相同变量,请利用 CloudFormation 的“映射”。因此,您可以在参数中指定您的环境,它将选择正确的映射 https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/mappings-section-structure.html - Sam
谢谢 - 看起来就是我要找的。 - Itay Moav -Malimovka
一旦我让它为我工作,我会回来的(等待工作周开始 :-))。我总是接受答案,我是SO的创始人之一。 - Itay Moav -Malimovka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接