为 Amazon RDS 资源添加标签 - Amazon Aurora
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

为 Amazon RDS 资源添加标签

可以使用 Amazon RDS 标签向您的 Amazon RDS 资源添加元数据。您可以使用标签自行添加有关数据库实例、快照、Aurora 集群等资源的符号。此举可以帮助您记录 Amazon RDS 资源。您还可以将标签与自动维护程序结合使用。

特别是,您可以将这些标签用于 IAM policy。您可以使用这些标签管理对 RDS 资源的访问,并控制可将什么操作应用于 RDS 资源。您还可以将具有类似标签的资源的费用分组在一起,使用标签来跟踪成本。

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

  • 数据库实例

  • 数据库集群

  • 只读副本

  • 数据库快照

  • 数据库集群快照

  • 预留数据库实例

  • 事件订阅

  • 数据库选项组

  • 数据库参数组

  • 数据库集群参数组

  • 数据库子网组

  • RDS Proxy

  • RDS Proxy 终端节点

注意

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

Amazon RDS 资源标签概述

Amazon RDS 标签是由您定义的名称-值对,与某种 Amazon RDS 资源关联。此名称也叫密钥。为键提供值为可选操作。可使用标签向 Amazon RDS 资源分配任意信息。例如,您可以使用标签键定义一个类别,而标签值可以是该类别中的一个项目。例如,您可以定义“project”标签键和“Salix”标签值。在这种情况下,这些表明 Amazon RDS 资源已分配给 Salix 项目。您也可以使用标签通过 environment=testenvironment=production 等键指定 Amazon RDS 资源用于测试或生产。我们建议使用一组具有一致性的标签键,以使跟踪与 Amazon RDS 资源关联的元数据变得更轻松。

此外,您可以在 IAM 策略中使用条件控制访问基于资源标签的 Amazon 资源。您可以使用全局 aws:ResourceTag/tag-key 条件键完成此操作。有关更多信息,请参阅《Amazon Identity and Access Management 用户指南》中的控制对 Amazon 资源的访问

每个 Amazon RDS 资源都有一组标签,其中包含分配给该 Amazon RDS 资源的所有标签。一个标签集可以包含多达 50 个标签,也可以为空。如果向 RDS 资源添加一个标签,而该标签的键与某个现有资源标签相同,则新值将覆盖旧值。

Amazon 不会对您的标签应用任何语义意义;所有标签都会严格地解析为字符串。RDS 可以在数据库实例或其他 RDS 资源上设置标签。标签设置取决于您在创建资源时使用的选项。例如,Amazon RDS 可添加一个标签来指示数据库实例用于生产或测试。

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

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

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

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

对标签进行缓存以用于授权。因此,可能先用几分钟添加和更新 Amazon RDS 资源上的标签,然后标签才可用。

结合使用标签与 IAM 进行访问控制

您可以将标签与 IAM policy 结合使用来管理对 Amazon RDS 资源的访问。还可以使用标签来控制可将什么操作应用于 Amazon RDS 资源。

有关使用 IAM 策略管理对标记资源的访问的信息,请参阅Amazon Aurora 的 Identity and Access Management

使用标签生成详细的账单报告

您还可以将具有类似标签的资源的费用分组在一起,使用标签来跟踪成本。

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

注意

您可以将标签添加到快照中,但您的账单不会反映该组。

添加、列出和删除标签

以下步骤说明如何对与数据库实例和 Aurora 数据库集群相关的资源执行典型的标记操作。

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

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

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

    注意

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

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

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

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

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

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

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

  8. 选择 Add

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

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

    注意

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

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

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

  5. 选择要删除的标签。

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

可以使用 Amazon 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 标签及其特征的列表。“键”和“值”的值都区分大小写。例如,project=Trinity 和 PROJECT=Trinity 是两个不同的标签。

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

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

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

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

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

使用 Amazon 标签编辑器

您可以使用 Amazon Web Services Management Console 标签编辑器在 Amazon 中浏览和编辑 RDS 资源上的标签。有关更多信息,请参阅 Amazon Resource Groups 用户指南中的标签编辑器

复制标签到数据库集群快照

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

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

  • 创建数据库集群。

  • 还原数据库集群。

  • 创建只读副本。

  • 复制数据库集群快照。

注意

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

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

教程:使用标签指定要停止哪些 Aurora 数据库集群

假设您正在开发或测试环境中创建大量 Aurora 数据库集群。您需要将所有这些集群保留几天。一些集群会在夜间运行测试。另一些集群可以在夜间停止运行并在第二天重新开始运行。以下示例说明如何为适合在夜间停止运行的集群分配标签。之后,该示例显示脚本如何检测哪些集群具有该标签并随后停止这些集群。在此示例中,键值对的值部分无关紧要。存在stoppable标签表示集群具有此用户定义的属性。

指定要停止的 Aurora 数据库集群
  1. 确定您要指定为“可停止”的集群的 ARN。

    用于标记的命令和 API 使用 ARN。这样一来,它们就可以在 Amazon 区域、Amazon 账户和可能具有相同短名称的不同类型资源之间无缝运作。您可以在集群上运行的 CLI 命令中指定 ARN 代替集群 ID。将自己集群的名称替换为 dev-test-cluster。在使用 ARN 参数的后续命令中,替换自己集群的 ARN。ARN 包含您自己的 Amazon 账户 ID 和集群所在的 Amazon 区域的名称。

    $ aws rds describe-db-clusters --db-cluster-identifier dev-test-cluster \ --query "*[].{DBClusterArn:DBClusterArn}" --output text arn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster
  2. 将标签 stoppable 添加至此集群。

    由您选择此标签的名称。这种方法意味着,您可以避免设计一种在名称中对所有相关信息进行编码的命名约定。在此类约定中,您可以在数据库实例名称或其他资源的名称中对信息进行编码。由于此示例将标签视为存在或不存在的属性,因此它忽略了 Value= 参数的 --tags 部分。

    $ aws rds add-tags-to-resource \ --resource-name arn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster \ --tags Key=stoppable
  3. 确认集群中存在该标签。

    以下命令以 JSON 格式和以制表符分隔的纯文本检索集群的标签信息。

    $ aws rds list-tags-for-resource \ --resource-name arn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster { "TagList": [ { "Key": "stoppable", "Value": "" } ] } $ aws rds list-tags-for-resource \ --resource-name arn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster --output text TAGLIST stoppable
  4. 要停止所有指定为stoppable的集群,请准备所有集群的列表。循环浏览列表,并检查每个集群是否都具有相关属性标签。

    此 Linux 示例使用 shell 脚本将群集 ARN 列表保存到临时文件中,然后为每个集群执行 CLI 命令。

    $ aws rds describe-db-clusters --query "*[].[DBClusterArn]" --output text >/tmp/cluster_arns.lst $ for arn in $(cat /tmp/cluster_arns.lst) do match="$(aws rds list-tags-for-resource --resource-name $arn --output text | grep 'TAGLIST\tstoppable')" if [[ ! -z "$match" ]] then echo "Cluster $arn is tagged as stoppable. Stopping it now." # Note that you can specify the full ARN value as the parameter instead of the short ID 'dev-test-cluster'. aws rds stop-db-cluster --db-cluster-identifier $arn fi done Cluster arn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster is tagged as stoppable. Stopping it now. { "DBCluster": { "AllocatedStorage": 1, "AvailabilityZones": [ "us-east-1e", "us-east-1c", "us-east-1d" ], "BackupRetentionPeriod": 1, "DBClusterIdentifier": "dev-test-cluster", ...

您可以在每天结束时运行此类脚本,以确保停止非必要的集群。还可以使用实用程序(例如 cron)安排任务,如每晚执行此类检查。例如,您可以这样做,以防某些集群被误运行。在此,您可以对准备待检查集群列表的命令进行微调。

以下命令生成集群列表,但只生成处于available状态的集群的列表。该脚本可以忽略已停止的集群,因为它们将具有不同的状态值,如stoppedstopping

$ aws rds describe-db-clusters \ --query '*[].{DBClusterArn:DBClusterArn,Status:Status}|[?Status == `available`]|[].{DBClusterArn:DBClusterArn}' \ --output text arn:aws:rds:us-east-1:123456789:cluster:cluster-2447 arn:aws:rds:us-east-1:123456789:cluster:cluster-3395 arn:aws:rds:us-east-1:123456789:cluster:dev-test-cluster arn:aws:rds:us-east-1:123456789:cluster:pg2-cluster
提示

您可以将分配标签的过程与查找具有这些标签的集群的过程结合使用,以其他方式降低成本。我们以用于开发和测试的 Aurora 数据库集群为例。在此,您可以指定在每天结束时删除一些集群,或者仅删除其读取器数据库实例。或者,您可以指定某些集群在预期使用率较低的时期,将其数据库实例更改为小型数据库实例类。