在 cloudformation 中将标签作为参数传递
Pass tags as parameters in clouldformation
我已经创建了一个简单的模板,我将使用它来创建 s3 存储桶。我的模板是这样的。
Parameters:
Environment:
Type: String
Default: prod
AllowedPattern: '[a-z\-]+'
BucketName:
Type: String
AllowedPattern: '[a-z\-]+'
Resources:
Bucket:
Type: AWS::S3::Bucket
Properties:
BucketName: !Sub foo-${Environment}-${BucketName}
Tags:
- Key: key_1
Value: foo
- Key: key_2
Value: foo
DeletionPolicy: Retain
我想制作一个通用模板,而不是每次创建 s3 存储桶时都创建不同的模板。我的 s3 存储桶之间唯一不同的是我添加到其中的标签数量。某些 S3 存储桶可能有 2 个标签,而其他存储桶可能有更多。我的 s3 存储桶最多有 5 个标签。所以我想知道是否有一种方法可以通过参数传递标签,这样如果我传递 3 个标签,就会创建 3 个标签,如果我传递 2 个标签,就会创建 2 个标签。
At the most i will have 5 tags
那么你需要5个参数:
Tag1:
Type: CommaDelimitedList
Default: ""
# ....
Tag5:
Type: CommaDelimitedList
Default: ""
和 5 个条件:
Conditions:
HasTag1:
!Not [!Equals [!Ref Tag1, ""] ]
# ...
HasTag5:
!Not [!Equals [!Ref Tag5, ""] ]
结束,然后您使用条件填充您的标签:
Tags:
- !If
- HasTag1
- Key: !Select [0, !Ref Tag1]
Value: !Select [1, !Ref Tag1]
- !Ref "AWS::NoValue"
# ...
- !If
- HasTag5
- Key: !Select [0, !Ref Tag5]
Value: !Select [1, !Ref Tag5]
- !Ref "AWS::NoValue"
我已经创建了一个简单的模板,我将使用它来创建 s3 存储桶。我的模板是这样的。
Parameters:
Environment:
Type: String
Default: prod
AllowedPattern: '[a-z\-]+'
BucketName:
Type: String
AllowedPattern: '[a-z\-]+'
Resources:
Bucket:
Type: AWS::S3::Bucket
Properties:
BucketName: !Sub foo-${Environment}-${BucketName}
Tags:
- Key: key_1
Value: foo
- Key: key_2
Value: foo
DeletionPolicy: Retain
我想制作一个通用模板,而不是每次创建 s3 存储桶时都创建不同的模板。我的 s3 存储桶之间唯一不同的是我添加到其中的标签数量。某些 S3 存储桶可能有 2 个标签,而其他存储桶可能有更多。我的 s3 存储桶最多有 5 个标签。所以我想知道是否有一种方法可以通过参数传递标签,这样如果我传递 3 个标签,就会创建 3 个标签,如果我传递 2 个标签,就会创建 2 个标签。
At the most i will have 5 tags
那么你需要5个参数:
Tag1:
Type: CommaDelimitedList
Default: ""
# ....
Tag5:
Type: CommaDelimitedList
Default: ""
和 5 个条件:
Conditions:
HasTag1:
!Not [!Equals [!Ref Tag1, ""] ]
# ...
HasTag5:
!Not [!Equals [!Ref Tag5, ""] ]
结束,然后您使用条件填充您的标签:
Tags:
- !If
- HasTag1
- Key: !Select [0, !Ref Tag1]
Value: !Select [1, !Ref Tag1]
- !Ref "AWS::NoValue"
# ...
- !If
- HasTag5
- Key: !Select [0, !Ref Tag5]
Value: !Select [1, !Ref Tag5]
- !Ref "AWS::NoValue"