标签是什么? - 标记 AWS 资源的最佳实践

标签是什么?

标签是应用于资源的密钥值对,用于保存有关该资源的元数据。每个标签都是由一个密钥和一个可选值组成的。目前并非所有服务和资源类型都支持标签(请参阅支持资源组标记 API 的服务)。其他服务可通过自己的 API 支持标签。需要注意的是,标签未加密,不应用于存储敏感数据,如个人身份信息 (PII)。

用户使用 AWS CLI、API 或 AWS Management Console 创建并应用于 AWS 资源的标签称为用户定义的标签。一些 AWS 服务(例如 AWS CloudFormation、Elastic Beanstalk 和 Auto Scaling)会自动为其创建和管理的资源分配标签。这些密钥被称为 AWS 生成的标签,通常带有 aws 前缀。该前缀不能用于用户定义的标签密钥。

在 AWS 资源中添加用户自定义标签的数量有使用要求和数量限制。有关更多信息,请参阅《AWS 一般参考指南》中的标签命名限制和要求。AWS 生成的标签不计入这些用户定义标签的限制。

表 1 - 用户定义的标签密钥和值示例

实例 ID 标签密钥 标签值
i-01234567abcdef89a CostCenter 98765
Stack Test
i-12345678abcdef90b CostCenter 98765
Stack Production

表 2 - AWS 生成的标签示例

AWS 生成的标签密钥 理由
aws:ec2spot:fleet-request-id 标识启动实例的 Amazon EC2 竞价型实例请求。
aws:cloudformation:stack-name 标识创建资源的 AWS CloudFormation 堆栈
lambda-console:blueprint 标识用作 AWS Lambda 功能模板的蓝图
elasticbeanstalk:environment-name 标识创建资源的应用程序。
aws:servicecatalog:provisionedProductArn 供应产品的的 Amazon 资源名称 (ARN)
aws:servicecatalog:productArn 从中启动预配置产品的产品的 ARN。

AWS 生成的标签构成命名空间。例如,在 AWS CloudFormation 模板中,您可以定义一组要在 stack 中一起部署的资源,其中 stack-name 是您指定的用于标识它的描述性名称。如果您检查诸如 aws:cloudformation:stack-name 的密钥,则可以发现用于限定参数范围的命名空间使用了三个元素:aws 表示组织cloudformation 表示服务,而 stack-name 表示参数

用户定义的标签也可以使用命名空间,建议使用组织标识符作为前缀。这可帮助您快速识别标签是您托管模式中的内容,还是您在环境中使用的服务或工具所定义的内容。

在 AWS 上建立云基础白皮书中,我们推荐了一组应实施的标签。不同的企业很可能有不同的允许模式和特定标签的不同列表。查看表 3 中的示例:

表 3 - 相同的标签密钥,不同的值验证规则

组织

标签密钥 标签值验证 标签值示例
A 公司 CostCenter 5432, 5422, 5499 5432
B 公司 CostCenter ABC* ABC123

如果这两个架构位于不同的组织中,就不会出现标签冲突问题。但是,如果这两个环境合并,命名空间就会发生冲突,验证就会变得更加复杂。这种情况似乎不太可能发生,但企业会被收购或合并,还有其他一些情况,例如客户与托管服务提供商、游戏出版商或风险投资企业合作,来自不同组织的账户是共享 AWS 组织的一部分。如表 4 所示,使用企业名称作为前缀来定义唯一的命名空间,就可以避免这些挑战:

表 4 - 标签密钥中命名空间的使用

组织

标签密钥 标签值验证 标签值示例
A 公司 company-a:CostCenter 5432, 5422, 5499 5432
B 公司 company-b:CostCenter ABC* ABC123

在定期收购和剥离业务的大型复杂组织中,这种情况会更频繁地发生。随着新收购公司的流程和做法在更大范围内得到统一,问题也就迎刃而解了。使用不同的命名空间很有帮助,因为可以报告旧标签的使用情况,并联系相关团队采用新架构。命名空间还可用于表示一个范围,或代表一个用例或一个与组织所有者相一致的责任领域。

表 5 - 标签密钥中的作用域或用例范围示例

用例 标签密钥 理由 允许的值
数据分类 example-inc:info-sec:data-classification 信息安全定义的数据分类集 sensitive, company-confidential, customer-identifiable
操作 example-inc:dev-ops:environment 实施测试和开发环境的调度 development, staging, quality-assurance, production
灾难恢复 example-inc:disaster-recovery:rpo 定义资源的恢复点目标 (RPO) 6h, 24h
成本分配 example-inc:cost-allocation:business-unit 财务团队需要关于各团队使用和支出情况的成本报告 corporate, recruitment, support, engineering

标签简单易用。标签的密钥和值都是长度可变的字符串,可以支持多种字符集。有关长度和字符集的更多信息,请参阅《AWS 一般参考》中的标记 AWS 资源。标签区分大小写,这意味着 costCentercostcenter 是不同的标签密钥。在不同的国家/地区,单词的拼写可能会有所不同,这可能会影响您的密钥。例如,在美国,人们可能会将密钥定义为 costcenter,但在英国,人们可能更倾向于使用 costcentre。从资源标记的角度来看,这些是不同的密钥。定义拼写、大小写和标点符号作为标记策略的一部分。任何人在创建或管理资源时都可以参考这些定义。下一节 制定您的标记策略 将详细讨论这一主题。