Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS云形成模板-为模板中的堆栈提供标记_Amazon Web Services_Amazon Cloudformation - Fatal编程技术网

Amazon web services AWS云形成模板-为模板中的堆栈提供标记

Amazon web services AWS云形成模板-为模板中的堆栈提供标记,amazon-web-services,amazon-cloudformation,Amazon Web Services,Amazon Cloudformation,我们希望使用特定于公司的标签来标记我们在AWS中创建的资源,以便进行计费。我正在使用云形成模板来加速Elasticbeanstalk实例和其他依赖于项目的资源。当我使用CloudFormation控制台创建堆栈时,它会在页面中的参数后询问我标记。我必须手动输入该堆栈的标记。但是,有没有办法在云形成模板本身中指定这些标记(堆栈的标记)?这样标签就可以传播到其他资源了?我知道云结构会自动用堆栈名标记资源。但是我们需要公司特定的标签来为不同的部门计费。启动AWS CloudFormation时,所请求

我们希望使用特定于公司的标签来标记我们在AWS中创建的资源,以便进行计费。我正在使用云形成模板来加速Elasticbeanstalk实例和其他依赖于项目的资源。当我使用CloudFormation控制台创建堆栈时,它会在页面中的参数后询问我标记。我必须手动输入该堆栈的标记。但是,有没有办法在云形成模板本身中指定这些标记(堆栈的标记)?这样标签就可以传播到其他资源了?我知道云结构会自动用堆栈名标记资源。但是我们需要公司特定的标签来为不同的部门计费。

启动AWS CloudFormation时,所请求的标签将应用于CloudFormation堆栈本身,并且(在可能的情况下)也将传播到该堆栈启动的资源

这些标记可以传递给CreateStack API调用,也可以从CLI传递:

  • 见:
这些标记应用于整个堆栈,不包括在CloudFormation模板中

但是,CloudFormation模板可以包含正在创建的特定资源的标记。例如,启动Amazon EC2实例时,可以在模板中包含标记:

“MyInstance”:{
“类型”:“AWS::EC2::实例”,
“财产”:{
“SecurityGroups”:[{“Ref”:“MySecurityGroup”}],
“可用区”:“us-east-1a”,
“ImageId”:“ami-20b65349”,
“卷”:[{
“VolumeId”:{“Ref”:“MyEBS”},
“设备”:“/dev/sdk”
}],
“标签”:[{
“关键”:“阶段”,
“价值”:“质量保证”
}]
}
}

在模板解剖中,不能直接设置堆栈级别标记。但是,您可以创建一个包装器模板,它有一个
AWS::CloudFormation::Stack

您可以在该资源上定义堆栈级别标记:

{
“AWSTemplateFormatVersion”:“2010-09-09”,
“说明”:“包装器模板”,
“资源”:{
“WrappedStackWithStackLevelTags”:{
“类型”:“AWS::CloudFormation::Stack”,
“财产”:{
“标记”:[{“键”:“阶段”,“值”:“QA”}],
“TemplateURL”:“your-original-template-s3-url”
}
}
}
}

与@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 
。。。通常,使用相同的格式并在标记键值对之间留出空格,根据需要添加尽可能多的标记

见:

谢谢你,约翰。(如果可能)是我需要的提示。cloudformation不支持标记elastic Beanstalk环境,但是您可以手动标记它。我假设如果它支持通过控制台标记,那么它应该能够通过云形成来完成,我错了。在我的经验中,云形成中的标记传播有点不可预测。令人失望的是,文档声称,“所有堆栈级别的标记,包括自动创建的标记,都被传播到AWS CloudFormation支持的资源中。”我甚至不知道这是一个选项。。。这不仅对标记继承非常有用。这就是你在模板中为整个堆栈设置SNS主题的方法吗?真是太有用了!!应该更新标题,包括“云形成堆栈级别标签”惊人!但是你从哪里知道这个用法呢?官方文件说“TemplateURL”属性是必需的。。。可以在不设置templateUrl的情况下使用此选项吗?我不想创建嵌套的stackfeature请求:我使用
aws cloudformation deploy
,这非常有效!唯一的区别是标记是以
--tags Key1=Value1 Key2=Value2
格式指定的。看见