[英]Convert CloudFormation template (yaml) to cdk python code
[英]Cloudformation YAML custom variable
我正在尝试在 AWS Cloudformation YAML 文件中实现类似于下面的内容:
AWSTemplateFormatVersion: 2010-09-09
testAttribute = "test"
Resources:
Lambda:
Type: AWS::Lambda::Function
Properties:
Runtime: python3.7
Role: !GetAtt iam.Arn
MemorySize: 128
Timeout: 10
Handler: lambda_function.lambda_handler
FunctionName: "testName"+${testAttribute}
Description: 'This is my lambda'
Code:
S3Bucket: myBucket
S3Key: "lambda/testName"+${testAttribute}+".zip"
我知道上面的内容不太正确,但是在搜索如何实现它时找不到好的答案。 有人对此事有指导吗?
这取决于用例,但如果“变量”为 static 并且您在部署堆栈时不需要更改它,我建议使用映射部分的替代解决方案。
这允许您定义一些 static 值而无需在部署堆栈时发送它们(您将拥有更清晰的部署命令,并且逻辑将在模板端而不是部署端)。
在这种情况下,我使用带有映射的!Sub intrinsic function(您可以设置多个变量以使用:Sub 替换):
AWSTemplateFormatVersion: 2010-09-09
Mappings:
attributes:
lambda:
testAttribute: "test"
Resources:
Lambda:
Type: AWS::Lambda::Function
Properties:
Runtime: python3.7
Role: !GetAtt iam.Arn
MemorySize: 128
Timeout: 10
Handler: lambda_function.lambda_handler
FunctionName: !Sub
- "testName${attr}"
- {attr: !FindInMap [attributes, lambda, testAttribute]}
Description: 'This is my lambda'
Code:
S3Bucket: myBucket
S3Key: !Sub
- "lambda/testName${attr}.zip"
- {attr: !FindInMap [attributes, lambda, testAttribute]}
注意:映射具有强制性的三级嵌套,在设计解决方案时请考虑到这一点
您可以使用具有默认值的Parameters ,然后在模板中使用Sub :
AWSTemplateFormatVersion: 2010-09-09
Parameters:
testAttribute:
Type: String
Default: test
Resources:
Lambda:
Type: AWS::Lambda::Function
Properties:
Runtime: python3.7
Role: !GetAtt iam.Arn
MemorySize: 128
Timeout: 10
Handler: lambda_function.lambda_handler
FunctionName: !Sub "testName${testAttribute}"
Description: 'This is my lambda'
Code:
S3Bucket: myBucket
S3Key: !Sub "lambda/testName${testAttribute}.zip"
[因错别字而编辑]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.