【问题标题】:Cloudformation template parameter to pass tags to resource将标签传递给资源的 Cloudformation 模板参数
【发布时间】:2018-02-02 03:53:14
【问题描述】:

我一直在绞尽脑汁,但看不出它是如何完成的,这似乎很有限,但我希望能够有一个模板参数,可用于将任意标签传递给我的模板中支持的资源,例如:

EC2Tags:
  Description: Tags to add to the EC2 Instance
  Type: CommaDelimitedList
  Default: "CreatedBy=JohnDoe,Name=NewEC2,OtherTag=OtherValue"

 ....

但稍后资源需要类似:

Type: "AWS::EC2::Instance"
Properties:
  Tags: 
    - 
     Key: "keyname1"
     Value: "value1"
    - 
     Key: "keyname2"
     Value: "value2" 

  ....

有没有办法实现这个目标?

【问题讨论】:

  • 将每个 tag 值创建为 CFT 参数,以便您可以在 Tags 属性中引用它。

标签: amazon-web-services amazon-cloudformation


【解决方案1】:

我想要一个不假设标签数量、标签顺序或标签名称的通用解决方案,经过多次反复试验,我设法使用@laurent-jalbert-simard 提出的自定义资源解决方案解决了这个问题。

如果其他人觉得有用的话,这里是要点:

https://gist.github.com/ispyinternet/97b434a2a58aea5d496ecd87b29e64e9

【讨论】:

    【解决方案2】:

    如果您传递的标签值的数量是确定的,则有一种方法可以实现。

    有一个名为Fn::Select 的函数可以与 CommaDelimitedValues 一起使用。

    这是一些可以工作的代码 sn-p。

    EC2Tags:
      Description: Tags to add to the EC2 Instance
      Type: CommaDelimitedList
      Default: "JohnDoe,NewEC2,OtherValue"
    
    
    Type: "AWS::EC2::Instance"
    Properties:
      Tags: 
      - 
        Key: "CreatedBy"
        Value: !Select [ 0, !Ref EC2Tags ]
      - 
        Key: "Name"
        Value: !Select [ 1, !Ref EC2Tags ]
      - 
        Key: "OtherTag"
        Value: !Select [ 2, !Ref EC2Tags ]
    

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      不,我不认为可以直接完成。但是,您可以创建一个简单的custom resource,它可以将您作为参数传递的标签应用到 EC2 实例。

      【讨论】:

        猜你喜欢
        • 2018-03-17
        • 1970-01-01
        • 2011-08-18
        • 2021-06-05
        • 2019-02-15
        • 1970-01-01
        • 2017-05-05
        • 2021-02-11
        • 2020-07-06
        相关资源
        最近更新 更多