amazon-web-services - 如何将参数传递给不同的 AWS SAM 文件
问题描述
我将我的 SAM 堆栈分成多个文件,如下所示:
.
├── README.md
├── lambda_template.yaml
.
.
.
└── template.yaml
这样我就可以在不同的文件中拥有不同的 lambda(及其相关资源)。
我的主template.yaml
文件看起来像:
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
Sample SAM Template
Resources:
MyLambda:
Type: AWS::Serverless::Application
Properties:
# Lambda function
Location: ./lambda_template.yaml
然后在./lambda_template.yaml
我有 lambda 的实际定义:
AWSTemplateFormatVersion : '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: Sam Template deploys MyLambda.
Parameters:
Environment:
Description: 'Required. Environment you are deploying to -- not working'
Type: String
Default: 'develop'
Resources:
# Details about the input_object_processor Lambda function
MyLambda:
Type: AWS::Serverless::Function
Properties:
...
我希望能够创建一个参数,然后在命令行中覆盖它sam deploy ....
我认为您可以执行以下操作:
sam deploy ... --parameter-overrides Environment=QA
但这没有用,所以我尝试了:
sam deploy ... --parameter-overrides ParameterKey=Environment,ParameterValue=-qa
但它似乎不尊重更新,只是使用默认值。有没有办法让 SAM 将参数传递给子文件?
解决方案
我已经断断续续地研究了一段时间,终于弄明白了。我花了这么长时间才尝试似乎有效的解决方案,这有点尴尬。希望这可以在将来为其他人节省一些时间:
我的主 template.yaml 文件现在看起来像:
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
Sample SAM Template
Parameters:
Environment:
Description: 'Required. Environment you are deploying to'
Type: String
Resources:
MyLambda:
Type: AWS::Serverless::Application
Properties:
Parameters:
Environment: !Ref Environment
Location: ./lambda_template.yaml
我的./lambda_template.yaml
文件现在看起来像:
AWSTemplateFormatVersion : '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: Sam Template deploys MyLambda.
Parameters:
Environment:
Description: 'Required. Environment you are deploying to -- not working'
Type: String
Resources:
# Details about the input_object_processor Lambda function
MyLambda:
Type: AWS::Serverless::Function
Properties:
FunctionName:
Fn::Join:
- "-"
- - "my"
- Ref: Environment
- 'lambda'
推荐阅读
- java - 有没有办法用JVM的websphere 8打开Java Mission Control?
- angular - 如何在多个地方渲染角度组件的相同实例?
- python - 在嵌入中跟踪公会名称和公会 ID
- html - 为什么我的 col-x 在引导程序中不能按预期工作?
- mongodb - 如何使用 mapReduce MongoDB 编写获取数组的总和?
- java - Eclipse调试错误:检查调试命令,调试
- java - 大小未从咖啡因缓存中卸载
- python - 在C中向上增加一个for循环
- c# - 处理用户表中的 CreatedBy 和 UpdatedBy 外键 - 使用 SQL 或 Entity Framework Core 为第一个用户播种
- c++ - 抛出 'std::length_error' what(): basic_string::_S_create Aborted 实例后调用终止