use*_*913 20 amazon-web-services aws-cloudformation
我们希望将公司特定标签用于我们在AWS中创建的用于计费目的的资源.我正在使用云形成模板来启动我们的Elasticbeanstalk实例和其他依赖于项目的资源.当我使用CloudFormation控制台创建堆栈时,它会在参数后面询问页面中的标签.我必须手动输入该堆栈的标签.但是有没有办法在云形成模板本身中指定那些标签(堆栈的标签)?这样Tag就会传播到其他资源?我知道云形成会自动使用堆栈名称标记资源.但我们需要公司特定的标签来向不同的部门收费.
lal*_*yos 31
在模板解剖中,您无法直接设置堆栈级别标记.但是,您可以使用AWS :: CloudFormation :: Stack的单个资源创建包装器模板.
您可以在该资源上定义堆栈级标记:
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "WrapperTemplate",
"Resources": {
"WrappedStackWithStackLevelTags": {
"Type" : "AWS::CloudFormation::Stack",
"Properties" : {
"Tags" : [ { "Key" : "Stage", "Value" : "QA" } ],
"TemplateURL" : "your-original-template-s3-url"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
Joh*_*ein 20
启动AWS CloudFormation时,所请求的标签将应用于CloudFormation Stack本身,并且(如果可能)也将传播到Stack启动的资源.
这些标记可以传递给CreateStack API调用,也可以从CLI传递:
这些标记应用于整个堆栈,不包含在CloudFormation模板中.
但是,CloudFormation模板可以包含正在创建的特定资源的标记.例如,在启动Amazon EC2实例时,标签可以包含在模板中:
"MyInstance" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"SecurityGroups" : [ { "Ref" : "MySecurityGroup" } ],
"AvailabilityZone" : "us-east-1a",
"ImageId" : "ami-20b65349",
"Volumes" : [
{ "VolumeId" : { "Ref" : "MyEBS" },
"Device" : "/dev/sdk" }
],
"Tags" : [
{
"Key" : "Stage",
"Value" : "QA"
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
Chu*_*eto 13
与 @lalyos 所说的相反,您不需要为此使用嵌套堆栈,只需提供应适用于所有资源的标记作为堆栈级别标记。
无论是在控制台上还是通过 CLI 运行堆栈,都可以指定这些堆栈级别标签。
CLI 示例:
aws cloudformation create-stack --stack-name my-stack-name \
--template-body file://path-to-template-file.yaml \
--parameters ParameterKey=param1key,ParameterValue=param1value \
--tags Key=tag1key,Value=tag1value \
Key=tag2key,Value=tag2value \
Key=tag3key,Value=tag3value
Run Code Online (Sandbox Code Playgroud)
...并且通常根据需要添加任意数量的标签,使用相同的格式并在标签键值对之间留有空格
请参阅: https ://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-add-tags.html
| 归档时间: |
|
| 查看次数: |
21719 次 |
| 最近记录: |