我正在构建一个嵌套的 Cloudformation 堆栈,其中的子模板多次使用。
我希望不同的资源(S3 存储桶、目标组等)使用 AWS::StackName 作为其名称的一部分。
!Sub ${AWS::StackName}-s3bucket
嵌套堆栈名称通常包含 AWS 生成的大写字符串,例如:
foobar-vpcstack-YN4842UYLUFL
但是,某些资源只允许全小写的名称。 有没有办法保证嵌套的栈名全部小写?
或者是否有更好的方法来处理嵌套堆栈及其资源的命名?
最佳答案
我使用以下规则为嵌套 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
关于aws-cloudformation - Cloudformation 嵌套堆栈命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56590840/