我有一组yaml
模板(一个根模板和几个子模板),用于在S3存储桶的顶层创建根堆栈和嵌套堆栈。看起来像:
my-cf-templates-bucket (S3 bucket)
├ root.yaml
├ child1.yaml
├ child2.yaml
├ ...
└ childN.yaml
为了提供TemplateURL
的子模板,当前我为存储区URL使用参数TemplateS3Bucket
:
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根模板的存储桶URL ,我可以通过它在AWS CloudFormation控制台(不是aws-cli)中创建堆栈。
通过这种方式,我可以从本质上拥有子模板的存储桶url,而无需将它们添加为可覆盖参数,也不需要为子堆栈的所有templateURL
属性重复完整的存储桶url。>
答案 0 :(得分:1)
我不知道。将模板的S3存储桶作为参数传递似乎是标准/最常见的处理方式。