gpt4 book ai didi

amazon-web-services - Cloudformation YAML 自定义变量

转载 作者:行者123 更新时间:2023-12-04 16:38:58 24 4
gpt4 key购买 nike

我试图在 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"

我知道上面的说法不太正确,但在搜索如何实现它时找不到好的答案。有人对这个问题有一些指导吗?

最佳答案

这取决于用例,但如果“变量”是静态的,并且您在部署堆栈时不需要更改它,我会建议另一种解决方案,使用<强>Mappings 部分。

这允许您定义一些静态值,而无需在部署堆栈时发送它们(您将拥有更清晰的部署命令,并且逻辑将位于模板端而不是部署端)。

在本例中,我使用 !Sub具有映射的内部函数(您可以使用 !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]}

注意:映射具有强制性的三级嵌套,请在设计解决方案时考虑到这一点

关于amazon-web-services - Cloudformation YAML 自定义变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64511506/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com