运行AWS SAM Local时如何指定模板参数?

Tom*_*han 4 amazon-web-services aws-cloudformation aws-sam-cli

使用AWS SAM Local我可以在本地测试我的无服务器应用程序,这很棒.

我也可以部署到AWS,它显然采用相同的标志aws cloudformation deploy,因此我可以传递一个参数文件,例如应用程序机密(API密钥等).

但是,我aws local start-api --help在Github上的文档中或文档中找不到有关如何在本地测试时使用参数文件的内容.

如何在运行时指向要与模板一起使用的参数文件sam local start-api

kic*_*hik 11

根据您可以传递的源代码--parameter-overrides.该参数解析器暗示的语法是这样的:

sam local start-api --parameter-overrides ParameterKey=Key1,ParameterValue=value1 ParameterKey=Key2,ParameterValue=value2
Run Code Online (Sandbox Code Playgroud)

在他们的测试中使用此语法.它也匹配sam local start-api --help(ref)所以它适合.

最后但并非最不重要的是,它已经定义了帮助文本,因此我不确定为什么它在您使用时不会显示--parameter-overrides.如果实际上没有显示错误报告,也许值得.

  • 是的,我也在帮助中注意到了这一点。但是,问题具体在于如何使用参数值将*文件路径*传递到*文件*,就像您可以使用“aws cloudformation部署”一样,但我找不到如何或是否可以使用`sam 本地启动-api`。 (2认同)
  • 貌似不支持那个。您可以尝试使用带有 `--parameter-values $(cat myparams.cfg)` 的 shell。该文件需要具有与平常不同的格式,但它应该可以工作。 (2认同)
  • ``sam local start-api --help''现在也可以正确声明`--parameter-overrides` (2认同)

Ash*_*Jha 6

您可以在 sam deploy 中使用 --parameter-overrides ,就像在 aws cloudformation deploy 中一样,只需稍加更改即可:

前:

sam deploy --template-file packaged.yaml --stack-name example-lambda --capabilities CAPABILITY_IAM --parameter-overrides ParameterKey=SourceS3Bucket ParameterValue=test-data-111
Run Code Online (Sandbox Code Playgroud)

后:

sam deploy --template-file packaged.yaml --stack-name example-lambda --capabilities CAPABILITY_IAM --parameter-overrides SourceS3Bucket=test-data-111
Run Code Online (Sandbox Code Playgroud)

值得注意的变化:ParameterKey、ParameterValue 不需要在 sam deploy 中显式指定。帮助我进行本地测试。

希望能帮助到你。:)

  • 是否可以使用 `--parameters-overrides` 作为 .json 文件? (3认同)