我们希望对我们在AWS中创建的用于计费目的的资源使用公司特定的标签。我正在使用云形成模板来启动我们的Elasticbeanstalk实例和其他依赖于项目的资源。当我使用CloudFormation控制台创建一个堆栈时,它会要求我在参数后的页面中输入标记。我必须手动输入该堆栈的标签。然而,有没有一种方法可以在云形成模板本身中指定这些标签(堆栈的标签)?这样标签就可以传播到其他资源了吗?我知道云的形成会自动使用堆栈名称来标记资源。但我们需要公司特定的标签来为不同的部门开具账单。
发布于 2014-12-17 11:17:46
启动亚马逊网络服务CloudFormation时,所请求的标签将应用于CloudFormation堆栈本身,并且(在可能的情况下)还将传播到该堆栈启动的资源。
这些标记可以传递给CLI调用,也可以从CreateStack传递:
请参阅:create-stack CLI documentation
这些标签应用于整个堆栈,并且不包含在CloudFormation模板中。
但是,CloudFormation模板可以包含正在创建的特定资源的标签。例如,启动亚马逊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"
}]
}
}发布于 2016-05-04 18:52:24
在模板剖析中,您不能直接设置堆栈级别的标记。但是,您可以创建一个包装器模板,它只有一个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"
}
}
}
}发布于 2021-03-18 21:40:37
与@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 ..。通常可以根据需要添加任意数量的标记,使用相同的格式,并允许标记键值对之间有空格
请参阅:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-add-tags.html
https://stackoverflow.com/questions/27513145
复制相似问题