使用AWS SAM Local我可以在本地测试我的无服务器应用程序,这很棒。
我还可以部署到 AWS,它显然采用与 相同的标志aws cloudformation deploy
,因此我可以传递一个带有应用程序机密(API 密钥等)的参数文件。
但是,我在 Github 上的文档中或文档中找不到任何aws local start-api --help
关于在本地测试时如何使用参数文件的内容。
运行时如何指向要与模板一起使用的参数文件sam local start-api
?
使用AWS SAM Local我可以在本地测试我的无服务器应用程序,这很棒。
我还可以部署到 AWS,它显然采用与 相同的标志aws cloudformation deploy
,因此我可以传递一个带有应用程序机密(API 密钥等)的参数文件。
但是,我在 Github 上的文档中或文档中找不到任何aws local start-api --help
关于在本地测试时如何使用参数文件的内容。
运行时如何指向要与模板一起使用的参数文件sam local start-api
?
你可以使用--parameter-overrides
开关。语法很冗长,如下所示:
sam local start-api --parameter-overrides ParameterKey=Key1,ParameterValue=value1 ParameterKey=Key2,ParameterValue=value2
也就是说,您需要用逗号分隔指定每对的键和值。
然后每一对用空格隔开。
来自sam local start-api --help
:
--parameter-overrides Optional. A string that contains
CloudFormation parameter overrides encoded
as key=value pairs. Use the same format as
the AWS CLI, e.g. 'ParameterKey=KeyPairName,
ParameterValue=MyKey ParameterKey=InstanceTy
pe,ParameterValue=t1.micro'
您可以在 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
后:
sam deploy --template-file packaged.yaml --stack-name example-lambda --capabilities CAPABILITY_IAM --parameter-overrides SourceS3Bucket=test-data-111
显着变化:ParameterKey、ParameterValue 不需要在 sam deploy 中显式指定。帮助我进行本地测试。
希望能帮助到你。:)
您似乎还可以使用-n
or--env-vars
参数将 JSON 文件中的环境变量传递给您的函数。请参阅文档:使用 SAM CLI(公测版)在本地测试您的无服务器应用程序
简而言之,您的 JSON 文件看起来像(从文档复制的示例):
{
"MyFunction1": {
"TABLE_NAME": "localtable",
"BUCKET_NAME": "testBucket"
},
"MyFunction2": {
"TABLE_NAME": "localtable",
"STAGE": "dev"
},
}
然后你可以这样做:
$ sam local start-api --env-vars env.json
这是专门针对您的 lambda 函数的环境变量,所以它可能不完全是您所追求的?
我奇怪的经验是它取决于参数的顺序。我有两个参数——指向 Mongo 实例的 SecretKey 和 DatabaseUri。当我第一次拥有 DatabaseUri 时,没有加载 SecretKey,并且由于缺少参数 SecretKey,构建失败。当我真的很绝望时,我首先交换了具有 SecretKey 的参数,它开始起作用了!