获取Cloudformation模板的存储段网址

时间:2019-04-06 12:54:49

标签: amazon-web-services amazon-s3 amazon-cloudformation aws-console

我有一组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。

1 个答案:

答案 0 :(得分:1)

我不知道。将模板的S3存储桶作为参数传递似乎是标准/最常见的处理方式。