Bra*_*lle 10 amazon-web-services aws-cloudformation
我有一套相当复杂的CloudFormation模板,用于配置我们基础架构的不同环境.但是我最近收到了使用相当广泛的标签列表(如15)标记创建的资源的请求.
将标签硬编码到每个模板文件中对我来说似乎不是一个好主意.我宁愿创建一次标记列表,并为每个可标记资源引用它们.问题是:我甚至不确定这是可能的.您是否知道可以实现可重复使用的标签列表?
我想写这个:
ECSAutoScalingGroup:
Type: AWS::AutoScaling::AutoScalingGroup
Properties:
...
Tags: !Ref ElTags
Run Code Online (Sandbox Code Playgroud)
而不是
ECSAutoScalingGroup:
Type: AWS::AutoScaling::AutoScalingGroup
Properties:
...
Tags: !Ref ElTags
- Key: Name
Value: !Join ["-", [!Ref EnvironmentName, 'ecs-as-group'] ]
PropagateAtLaunch: true
- Key: TEAM
Value: !Ref TeamName
PropagateAtLaunch: true
Run Code Online (Sandbox Code Playgroud)
如果您不将标签传递给模板而是在部署期间引用它们,则可以轻松地重用标签。标签将传播到堆栈的所有资源。类似于下面的命令可能会满足您的需求:
aws cloudformation create-stack --stack-name mystack \
--template-body file://my_template.yaml --tags file://my_tags.json
Run Code Online (Sandbox Code Playgroud)
文件 my_tags.json 的格式为
[
{"Key": "mytag", "Value": "val"},
...
]
Run Code Online (Sandbox Code Playgroud)
或者,您可以通过 CodePipeline 部署您的堆栈并在模板配置中定义标签
小智 4
这可以使用Fn::Transform函数和 AWS 宏来实现AWS::Include。
Fn::Transform指定一个宏来对堆栈模板的一部分执行自定义处理
更多Fn::Transform关于https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-transform.html
AWS::Include是一个 AWS CloudFormation 宏,它会在模板中的任意位置插入代码片段。
您可以这样重复使用标签:
Resources:
TestSG:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: 'SG for testing'
GroupName: testSG
SecurityGroupIngress:
- CidrIp: '0.0.0.0/0'
FromPort: 80
IpProtocol: tcp
ToPort: 80
'Fn::Transform':
Name: AWS::Include
Parameters:
Location: 's3://bucket-name/tags.yaml'
TestRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Principal:
Service: lambda.amazonaws.com
Action: sts:AssumeRole
ManagedPolicyArns:
- 'arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess'
RoleName: testRole
'Fn::Transform':
Name: AWS::Include
Parameters:
Location: 's3://bucket-name/tags.yaml'
Run Code Online (Sandbox Code Playgroud)
您的标签将位于不同的模板中,该模板将放置在 S3 存储桶上。这是文件tags.yaml的内容:
Tags:
- Key: tag1
Value: value1
- Key: tag2
Value: value2
- Key: tag3
Value: value3
- Key: tag4
Value: value4
- Key: tag5
Value: value5
- Key: tag6
Value: value6
- Key: tag7
Value: value7
- Key: tag8
Value: value8
- Key: tag19
Value: value9
- Key: tag10
Value: value10
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
523 次 |
| 最近记录: |