使用 AWS SAM Local 我可以在本地测试无服务器应用程序,非常棒。
我还可以部署到 AWS,这显然需要使用与aws cloudformation deploy
相同的标志,因此我可以传递一个参数文件,例如应用程序机密(API 密钥等)。
但是,在本地测试时,在aws local start-api --help
或 Github 文档中都找不到如何使用参数文件的说明。
当运行 sam local start-api
时,如何指向参数文件以与我的模板一起使用?
使用 AWS SAM Local 我可以在本地测试无服务器应用程序,非常棒。
我还可以部署到 AWS,这显然需要使用与aws cloudformation deploy
相同的标志,因此我可以传递一个参数文件,例如应用程序机密(API 密钥等)。
但是,在本地测试时,在aws local start-api --help
或 Github 文档中都找不到如何使用参数文件的说明。
当运行 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'
aws cloudformation deploy
一样,但我找不到如何或是否可以使用sam local start-api
实现。 - Tomas Aschan--parameter-values $(cat myparams.cfg)
。该文件需要与通常的格式不同,但应该可以工作。 - kichiksam local start-api --help
now also correctly states --parameter-overrides
- sgdesmet--parameter-override
参数?我想将环境参数与脚本分开。 - Matteosam 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
显著变化: 在sam deploy中不需要显式指定ParameterKey、ParameterValue,这有助于我的本地测试。
希望对您有所帮助。:)
--parameters-overrides
作为 .json 文件是否可行? - Matteo似乎你也可以使用-n
或--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
我的奇怪经历是,这取决于参数的顺序。我有两个参数-SecretKey和指向Mongo实例的DatabaseUri。当我首先使用DatabaseUri时,SecretKey没有加载,因此在缺少参数SecretKey时构建失败。当我真的绝望时,我交换了参数,将SecretKey放在第一位,然后它开始工作了!
sam --version
显示为4.0。在sam local start-api --help
的选项中也没有列出(sam local start-api --help | grep -i parameter-values
没有任何输出)。 - curiouscatsam deploy
的功能请求已经开放了几年 - https://github.com/aws/aws-sam-cli/issues/2054 - 如果它最终完成,将会在这里。此外,还包含一些其他人正在使用的解决方法。 - mijiturka