Cloudformation嵌套堆栈命名

时间:2019-06-14 02:58:19

标签: amazon-cloudformation

我正在使用一个多次使用的子模板来构建嵌套的Cloudformation堆栈。

我希望不同的资源(S3存储桶,目标组等)将AWS :: StackName用作其名称的一部分。

!Sub ${AWS::StackName}-s3bucket

嵌套堆栈名称通常包括由AWS生成的字符串,该字符串大写,例如:

foobar-vpcstack-YN4842UYLUFL

但是,某些资源只允许使用全小写的名称。 有没有办法确保嵌套堆栈名称全部为小写字母?

还是有更好的方法来处理嵌套堆栈及其资源的命名?

1 个答案:

答案 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