为 Amazon RDS 资源添加标签 - Amazon Relational Database Service

为 Amazon RDS 资源添加标签

Amazon RDS 标签是由您定义的名称-值对,与某种 Amazon RDS 资源(例如,数据库实例或数据库快照)关联。此名称也叫。您可以选择为键提供值。

可以使用 AWS Management Console、AWS CLI 或 Amazon RDS API 添加、列出和删除 Amazon RDS 资源上的标签。在使用 CLI 或 API 时,确保提供要使用的 RDS 资源的 Amazon 资源名称(ARN)。有关构造 ARN 的详细信息,请参阅构建 Amazon RDS 的 ARN

为什么要使用 Amazon RDS 资源标签?

您可使用标签执行以下操作:

  • 按应用程序、项目、部门、环境等对 RDS 资源进行分类。例如,您可以使用标签键定义类别,其中标签值是类别中的项目。您可以创建标签 environment=prod。或者,您可以定义标签键 project 和标签值 Salix,这表示 Amazon RDS 资源将分配给 Salix 项目。

  • 自动执行资源管理任务。例如,您可以为已标记 environment=prod 的实例创建一个维护时段,该时段不同于已标记 environment=test 的实例的时段。您还可以为已标记 environment=prod 的实例配置自动数据库快照。

  • 使用 IAM 策略控制对 RDS 资源的访问。您可以使用全局 aws:ResourceTag/tag-key 条件键完成此操作。例如,策略可能只允许 DBAdmin 组中的用户修改已标记 environment=prod 的数据库实例。有关使用 IAM 策略管理对已标记资源的访问的信息,请参阅 Amazon RDS 的 Identity and Access Management,以及《AWS Identity and Access Management 用户指南》中的控制对 AWS 资源的访问

  • 根据标签监控资源。例如,您可以为已标记 environment=prod 的数据库实例创建 Amazon CloudWatch 控制面板。

  • 通过将具有类似标签的资源的费用分组在一起来跟踪成本。例如,如果您使用 project=Salix 标记与 Salix 项目关联的 RDS 资源,则可以为该项目生成成本报告并为该项目分配费用。有关更多信息,请参阅 AWS 账单如何与 Amazon RDS 中的标签结合使用

Amazon RDS 资源标签的工作原理

AWS不会对您的标签应用任何语义意义。标签严格按字符串进行解释。

Amazon RDS 中的标签集

每个 Amazon RDS 资源都有一个名为标签集的容器。该容器包含所有分配给该资源的标签。一个资源只有一个标签集。

一个标签集包含 0 至 50 个标签。如果向 RDS 资源添加一个标签,而该标签的键与某个现有资源标签相同,则新值将覆盖旧值。

Amazon RDS 中的标签结构

RDS 标签的结构如下所示:

标签键

键是标签的必需名称。该字符串值的长度必须在 1 到 128 个 Unicode 字符之间,并且不能带有前缀 aws:rds:。字符串只能包含 Unicode 字母、数字、空格、_.:/=+-@ 的集合。Java 正则表达式是 "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$"。标签键区分大小写。因此,键 projectProject 是不同的。

键对于标签集是唯一的。例如,标签集中不能有键相同但值不同的键-值对,如 project=Trinityproject=Xanadu

标签值

值是标签的可选字符串值。该字符串值的长度必须在 1 到 256 个 Unicode 字符之间。字符串只能包含 Unicode 字母、数字、空格、_.:/=+-@ 的集合。Java 正则表达式是 "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$"。标签值区分大小写。因此,值 prodProd 是不同的。

在标签集中,值无需具有唯一性,且可为空值。例如,在 project=Trinitycost-center=Trinity 的标签集中,可以存在键-值对。

符合标记条件的 Amazon RDS 资源

您可以标记以下 Amazon RDS 资源:

  • 数据库实例

  • 数据库集群

  • 数据库集群端点

  • 只读副本

  • 数据库快照

  • 数据库集群快照

  • 预留数据库实例

  • 事件订阅

  • 数据库选项组

  • 数据库参数组

  • 数据库集群参数组

  • 数据库子网组

  • RDS Proxy

  • RDS Proxy 终端节点

    注意

    目前,您无法使用 AWS Management Console 标记 RDS Proxy 和 RDS Proxy 端点。

  • 蓝/绿部署

  • 零 ETL 集成(预览版)

AWS 账单如何与 Amazon RDS 中的标签结合使用

使用标签来组织AWS账单以反映您自身的成本结构。要执行此操作,请注册以获取包含标签键值的 AWS 账户 账单。然后,如需查看组合资源的成本,请按有同样标签键值的资源组织您的账单信息。例如,您可以将特定的应用程序名称用作几个资源的标签,然后组织账单信息,以查看在数个服务中的使用该应用程序的总成本。有关更多信息,请参阅 AWS Billing 用户指南 中的使用成本分配标签

成本分配标签如何与数据库快照结合使用

您可以向数据库快照添加标签。但是,您的账单不会反映此分组。必须满足以下条件,才能将成本分配标签应用于数据库快照:

  • 标签必须附加到父数据库实例。

  • 父数据库实例必须与数据库快照在同一 AWS 账户中。

  • 父数据库实例必须与数据库快照在同一 AWS 区域中。

如果数据库快照与父数据库实例不在同一区域中,或者如果删除了父数据库实例,则这些快照将被视为孤立快照。孤立的数据库快照不支持成本分配标签。孤立快照的成本会汇总到单个未标记的行项目中。满足以下条件时,跨账户数据库快照将不会被视为孤立快照:

  • 这些快照与父数据库实例在同一区域中。

  • 父数据库实例由源账户所有。

    注意

    如果父数据库实例由其他账户所有,则成本分配标签不适用于目标账户中的跨账户快照。

标记 Amazon RDS 资源的最佳实践

在使用标签时,我们建议您遵循以下最佳实践:

  • 记录组织中所有团队所遵循的标签使用惯例。具体而言,请确保名称既具有描述性又保持一致。例如,对格式 environment:prod 进行标准化,而不是使用 env:production 标记某些资源。

    重要

    请勿在标签中存储个人身份信息(PII)或其他机密或敏感信息。

  • 自动添加标记以确保一致性。例如,您可以使用以下方法:

    • 在 AWS CloudFormation 模板中包含标签。在使用模板创建资源时,系统会自动标记资源。

    • 使用 AWS Lambda 函数定义和应用标签。

    • 创建一个 SSM 文档,其中包含向 RDS 资源添加标签的步骤。

  • 仅在必要时使用标签。您最多可以为单个 RDS 资源添加 50 个标签,但最佳实践是避免不必要的标签激增和复杂性。

  • 定期检查标签的相关性和准确性。根据需要删除或修改已过时的标签。

  • 考虑在 AWS Management Console中使用 AWS 标签编辑器创建标签。您可以使用标签编辑器同时向多个受支持的 AWS 资源(包括 RDS 资源)添加标签。有关更多信息,请参阅 AWS Resource Groups 用户指南中的标签编辑器

将标签复制到数据库快照

在创建或还原数据库实例时,您可以指定将数据库实例中的标签复制到数据库实例的快照。复制标签可确保数据库快照的元数据与源数据库实例的元数据匹配。它还确保数据库快照的任何访问策略也与源数据库实例的访问策略相匹配。

您可以为以下操作指定将标签复制到数据库快照:

  • 创建数据库实例。

  • 还原数据库实例。

  • 创建只读副本。

  • 复制数据库快照。

在大多数情况下,默认不复制标签。不过,从数据库快照还原数据库实例时,RDS 会检查您是否指定新标签。如果是,新标签将添加到还原的数据库实例中。如果没有新的标签,RDS 会在创建快照时将源数据库实例中的标签添加到还原的数据库实例中。

为防止来自源数据库实例的标签添加到还原的数据库实例中,建议在还原数据库实例时指定新标签。

注意

在某些情况下,您可以为 AWS CLI 命令 create-db-snapshot--tags 参数包含一个值。或者,您可以为 CreateDBSnapshot API 操作提供至少一个标签。在这些情况下,RDS 不会将标签从源数据库实例复制到新的数据库快照。即使源数据库实例已开启 --copy-tags-to-snapshotCopyTagsToSnapshot)选项,此功能也适用。

如果您采用此方法,则可以从数据库快照创建数据库实例的副本。这种方法可避免添加不适用于新数据库实例的标签。您可以使用 AWS CLI create-db-snapshot 命令(或 CreateDBSnapshot RDS API 操作)创建数据库快照。创建数据库快照后,可以按本主题后面所述添加标签。

在 Amazon RDS 中添加和删除标签

您可执行以下操作:

  • 在创建资源的同时创建标签,例如在运行 AWS CLI 命令 create-db-instance 时。

  • 使用命令 add-tags-to-resource 向现有资源添加标签。

  • 使用命令 list-tags-for-resource 列出与特定资源关联的标签。

  • 使用命令 add-tags-to-resource 更新标签。

  • 使用命令 remove-tags-from-resource 从资源中删除标签。

以下步骤说明如何对与数据库实例相关的资源执行典型的标记操作。注意,对标签进行缓存以用于授权。因此,当您在 Amazon RDS 资源上添加或更新标签时,可能需要等待几分钟,之后修改才能生效。

为 Amazon RDS 资源加标签的过程对于所有资源均类似。以下过程展示如何为 Amazon RDS 数据库实例加标签。

要向数据库实例添加标签,请执行以下操作:
  1. 登录AWS Management Console并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Databases (数据库)

    注意

    要在数据库窗格中筛选数据库实例的列表,对于筛选数据库,输入文本字符串。只会显示包含该字符串的数据库实例。

  3. 选择要标记的数据库实例的名称以显示其详细信息。

  4. 在详细信息部分中,向下滚动到标签部分。

  5. 选择 Add。将显示添加标签窗口。

    “Add tags (添加标签)”窗口
  6. 标签键输入一个值。

  7. 要添加其他标签,您可以选择添加其他标签,并为其标签键输入一个值。

    将该步骤重复执行所需的次数。

  8. 选择 Add

删除数据库实例的标签
  1. 登录AWS Management Console并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Databases (数据库)

    注意

    要在数据库窗格中筛选数据库实例的列表,请在筛选数据库框输入文本字符串。只会显示包含该字符串的数据库实例。

  3. 选择数据库实例的名称以显示其详细信息。

  4. 在详细信息部分中,向下滚动到标签部分。

  5. 选择要删除的标签。

    “Tags (标签)”部分
  6. 选择 Delete (删除),然后在 Delete tags (删除标签) 窗口中选择 Delete (删除)

可以使用 AWS CLI 为数据库实例添加、列出或删除标签。

要了解有关如何构建所需 ARN 的更多信息,请参阅构建 Amazon RDS 的 ARN

您可使用 Amazon RDS API 为数据库实例添加、列出或删除标签。

要了解有关如何构建所需 ARN 的更多信息,请参阅构建 Amazon RDS 的 ARN

在通过 Amazon RDS API 使用 XML 时,标签会使用如下架构:

<Tagging> <TagSet> <Tag> <Key>Project</Key> <Value>Trinity</Value> </Tag> <Tag> <Key>User</Key> <Value>Jones</Value> </Tag> </TagSet> </Tagging>

下表提供了允许使用的 XML 标签及其特征的列表。KeyValue 的值区分大小写。例如,project=TrinityPROJECT=Trinity 是不同的标签。

标签元素 描述
标签集 标签集是分配给 Amazon RDS 资源的所有标签的容器。每个资源只能有一个标签集。您只可以通过 Amazon RDS API 使用标签集。
标签 标签是用户定义的键值对。一个标签集中可以有 1 到 50 个标签。
密钥

密钥是标签必需的名称。有关限制,请参阅 Amazon RDS 中的标签结构

该字符串值的长度可以在 1 到 128 个 Unicode 字符之间,并且不能带有前缀 aws:rds:。该字符串只能包含 Unicode 字母、数字、空格、“_”、“.”、“/”、“=”、“+”、“-”的集合(Java 正则表达式:“^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$”)。

密钥在标签集中必须具有唯一性。例如,标签集中不能有键相同但值不同的键-值对,如 project/Trinity 和 project/Xanadu。

值是标签的可选内容。有关限制,请参阅 Amazon RDS 中的标签结构

该字符串值的长度可以在 1 到 256 个 Unicode 字符之间,并且不能带有前缀 aws:rds:。该字符串只能包含 Unicode 字母、数字、空格、“_”、“.”、“/”、“=”、“+”、“-”的集合(Java 正则表达式:“^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$”)。

在标签集中,值不必具有唯一性,且可为空值。例如,在“项目/Trinity”和“成本 - 中心/Trinity”的一个标签集中,可以存在键值对。