【发布时间】:2019-08-28 04:14:04
【问题描述】:
我有一组 yaml 模板(一个根模板和几个子模板)用于在 S3 存储桶的顶层创建根堆栈和嵌套堆栈。它看起来像:
my-cf-templates-bucket (S3 bucket)
├ root.yaml
├ child1.yaml
├ child2.yaml
├ ...
└ childN.yaml
为了提供子模板的TemplateURL,目前我使用一个参数TemplateS3Bucket作为bucket URL:
Parameters:
TemplateS3Bucket:
Description: The bucket url for templates
Type: String
Default: https://s3.eu-central-1.amazonaws.com/my-cf-templates-bucket
Resources:
ChildStack1:
Type: AWS::CloudFormation::Stack
Properties:
TemplateURL: !Join ["/", [ !Ref TemplateS3Bucket, "child1.yaml"]]
Parameters:
ProjectName: !Ref ProjectName
ChildStack1:
Type: AWS::CloudFormation::Stack
Properties:
TemplateURL: !Join ["/", [ !Ref TemplateS3Bucket, "child2.yaml"]]
Parameters:
ProjectName: !Ref ProjectName
# ...
ChildStackN:
Type: AWS::CloudFormation::Stack
Properties:
TemplateURL: !Join ["/", [ !Ref TemplateS3Bucket, "childN.yaml"]]
Parameters:
ProjectName: !Ref ProjectName
问题是:
有没有办法(!GetAtt 等)获取 S3 根模板的 bucket URL,我通过它在 AWS CloudFormation 控制台(不是 aws-cli)中创建堆栈。
通过这种方式,我可以从本质上获得子模板的存储桶 url,既不需要将它们添加为可覆盖的参数,也不需要为子堆栈的所有 templateURL 属性重复完整的存储桶 url。
【问题讨论】:
标签: amazon-web-services amazon-s3 amazon-cloudformation