我正在使用一个多次使用的子模板来构建嵌套的Cloudformation堆栈。
我希望不同的资源(S3存储桶,目标组等)将AWS :: StackName用作其名称的一部分。
!Sub ${AWS::StackName}-s3bucket
嵌套堆栈名称通常包括由AWS生成的字符串,该字符串大写,例如:
foobar-vpcstack-YN4842UYLUFL
但是,某些资源只允许使用全小写的名称。 有没有办法确保嵌套堆栈名称全部为小写字母?
还是有更好的方法来处理嵌套堆栈及其资源的命名?
答案 0 :(得分:0)
我使用以下规则为嵌套的 Cloudformation 堆栈中的 s3 存储桶设置 BucketName
。它确保存储桶名称全部小写且唯一。
"BucketName": {"Fn::Join": ["-", [
"foo", {"Fn::Select": ["2", {"Fn::Split": ["/", {"Ref": "AWS::StackId"}]}]}
]]}
foo
:是存储桶名称的前缀。
Fn::Select ...
:该函数获取 StackId 的最后一部分。
给定示例 StackId:arn:aws:cloudformation:ap-northeast-1:888888:stack/ParentStack-ChildStack-11MKHI1KPKH7O/1f29c920-82d1-11eb-85b7-0ebec92bca7d
上面的代码为 BucketName 返回以下字符串:foo-1f29c920-82d1-11eb-85b7-0ebec92bca7d