CloudFormation - 将标签应用于其他 AWS 资源

Posted

技术标签:

【中文标题】CloudFormation - 将标签应用于其他 AWS 资源【英文标题】:CloudFormation - Applying tags to other AWS resources 【发布时间】:2019-02-22 18:21:06 【问题描述】:

我试图了解 CloudFormation 在将标签应用到它创建的资源方面的行为。

根据他们的文档 - https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html

In addition to any tags you define, AWS CloudFormation automatically creates the following stack-level tags with the prefix aws::

aws:cloudformation:logical-id
aws:cloudformation:stack-id
aws:cloudformation:stack-name

我从 CloudFormation 创建了一个 DynamoDB 表,我访问了 DynamoDB 控制台并选择了标签选项卡,但找不到任何要添加的特定标签。我也没有找到添加的 aws:cloudformation:logical:id 标签。

然后我尝试使用 CloudFormation 创建一个 S3 存储桶。这似乎可行,我能够访问 S3 控制台并找到 S3 存储桶的 aws:cloudformation:logical-id 标记。

这是某种不一致吗?是否有任何特定的文档可以用来查找 CloudFormation 应用前缀为 aws: 的标签的 AWS 资源列表,如文档中所述?

任何帮助将不胜感激。谢谢!

【问题讨论】:

我注意到标签也没有用于 ECS 相关资源。 【参考方案1】:

我最近不得不就此联系 AWS 企业支持

未从云形成接收标签的常见请求服务包括

DynamoDB 弹力痛 IAM 资源 ECS 集群 Cloudfront 发行版 胶水作业 SQS Firehose 传输流

有一个内部功能请求打开,但他们建议的操作是手动标记资源。

【讨论】:

这很可悲,也有点傻。我猜在这种情况下,使用 API 或 Terraform 之类的东西是唯一的选择?【参考方案2】: 在同一个 CFT 中除了 DynamoDB 之外还有其他资源吗?如果是,该资源是否被 CF 标记? 如果您没有任何其他资源,您可以添加 EC2 实例资源来验证这是资源特定问题还是模板范围问题。 从您发布的内容看来,堆栈创建成功。虽然听起来很傻,但您可以使用 CLI 尝试一次 - aws cloudformation create-stack --stack-name Name-of-your-stack --template-body file://your_template.json --tags Key=Name,Value=Your_Tag_Value --profile default --region region --capabilities CAPABILITY_NAMED_IAM 如果您的 CFT 中没有 IAM 资源,您可以跳过 --capabilities CAPABILITY_NAMED_IAM。 我从未遇到过任何通过 CF 标记的问题,可能需要检查 these sample templates。

【讨论】:

我再次尝试使用不同的模板,似乎需要时间或至少这是我所经历的。在我的第二次尝试中,我能够看到 DDB 表上的标签。文档还说标签被传播到支持它们的 AWS 资源。但我找不到支持的列表。这也可以解释一些事情。

以上是关于CloudFormation - 将标签应用于其他 AWS 资源的主要内容,如果未能解决你的问题,请参考以下文章

无服务器框架 1.0:将 Cloudformation 转换为适用于 AWS Firehose 的 Yaml

如何使用 cloudformation 或 yaml 将保留天数设置为日志流

适用于 S3 事件的 Cloudformation SQS 策略

CloudFormation,在 DependsOn 上应用条件

如何通过 CloudFormation 设置 EC2 实例根卷的标签

在 cloudformation 中将标签作为参数传递