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

为 Amazon RDS 资源添加标签

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

具体而言,这些标签可与 IAM 策略结合使用,以管理对 Amazon RDS 资源的访问并控制可将什么操作应用于 Amazon RDS 资源。您还可以将具有类似标签的资源的费用分组在一起,使用标签来跟踪成本。

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

  • 数据库实例

  • 数据库集群

  • 只读副本

  • 数据库快照

  • 数据库集群快照

  • 预留数据库实例

  • 事件订阅

  • 数据库选项组

  • 数据库参数组

  • 数据库集群参数组

  • 数据库安全组

  • 数据库子网组

Amazon RDS 资源标签概述

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

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

AWS 不会对您的标签应用任何语义意义;所有标签都会严格地作为字符串进行解释。Amazon RDS 可以在数据库实例或其他 Amazon 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 的标签集中,可以存在键-值对。

可使用 AWS 管理控制台、命令行界面或 Amazon RDS API 添加、列出和删除 Amazon RDS 资源上的标签。在使用命令行界面或 Amazon RDS API 时,必须提供要使用的 Amazon RDS 资源的 Amazon 资源名称 (ARN)。有关构造 ARN 的详细信息,请参阅构建 Amazon RDS 的 ARN

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

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

这些标签可与 IAM 策略结合使用,以管理对 Amazon RDS 资源的访问并控制可将什么操作应用于 Amazon RDS 资源。

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

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

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

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

注意

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

添加、列出和删除标签

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

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

要向数据库实例添加标签,请执行以下操作:

  1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台:https://console.amazonaws.cn/rds/

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

    注意

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

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

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

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

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

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

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

  8. 选择 Add

删除数据库实例的标签

  1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台:https://console.amazonaws.cn/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 标签及其特征的列表。“键”和“值”的值都区分大小写。例如,project=Trinity 和 PROJECT=Trinity 是两个不同的标签。

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

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

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

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

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

使用 AWS 标签编辑器

您可以使用 AWS 标签编辑器在 AWS 管理控制台 中浏览和编辑 RDS 资源上的标签。有关更多信息,请参阅 AWS Resource Groups 用户指南中的标签编辑器

复制标签到数据库实例快照

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

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

  • 创建数据库实例。

  • 还原数据库实例。

  • 创建只读副本。

  • 复制数据库快照。

注意

如果您包含 create-db-snapshot AWS CLI 命令的 --tag-key 参数的值(或至少为 CreateDBSnapshot API 操作提供一个标签),则 RDS 不会将源数据库实例中的标签复制到新数据库快照。即使源数据库实例已启用 (--copy-tags-to-snapshot (CopyTagsToSnapshot) 选项,此功能也适用。如果您采用此方法,则可以从数据库快照创建数据库实例的副本且无需添加不适用于新数据库实例的标签。使用 AWS CLI create-db-snapshot 命令(或 CreateDBSnapshot Amazon RDS API 操作)创建数据库快照后,您随后可以按本主题后面所述添加标签。

教程:使用标签指定要停止的数据库实例

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

指定要停止的数据库实例

  1. 确定您要指定为“可停止”的数据库实例的 ARN。

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

    $ aws rds describe-db-instances --db-instance-id dev-test-db-instance \ --query "*[].{DBInstance:DBInstanceArn}" --output text arn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance
  2. 将标签 stoppable 添加至此数据库实例。

    此标签的名称由您选择。使用此类标签是设计命名约定的一种替代方法,该方法对数据库实例(或其他类型资源)名称中的所有相关信息进行编码。由于此示例将标签视为存在或不存在的属性,因此它忽略了 --tags 参数的 Value= 部分。

    $ aws rds add-tags-to-resource \ --resource-name arn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance \ --tags Key=stoppable
  3. 确认数据库实例中存在标签。

    以下命令以 JSON 格式和以制表符分隔的纯文本检索数据库实例中的标签信息。

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

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

    $ aws rds describe-db-instances --query "*[].[DBInstanceArn]" --output text >/tmp/db_instance_arns.lst $ for arn in $(cat /tmp/db_instance_arns.lst) do match="$(aws rds list-tags-for-resource --resource-name $arn --output text | grep stoppable)" if [[ ! -z "$match" ]] then echo "DB instance $arn is tagged as stoppable. Stopping it now." # Note that you need to get the DB instance identifier from the ARN. dbid=$(echo $arn | sed -e 's/.*://') aws rds stop-db-instance --db-instance-identifier $dbid fi done DB instance arn:arn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance is tagged as stoppable. Stopping it now. { "DBInstance": { "DBInstanceIdentifier": "dev-test-db-instance", "DBInstanceClass": "db.t3.medium", ...

您可以在每天结束时运行此类脚本,以确保停止非必要的数据库实例。您还可以使用实用程序(例如 cron)计划作业,如每晚执行此类检查,以防某些数据库实例被误运行。在这种情况下,您可以对准备待检查数据库实例列表的命令进行微调。以下命令生成数据库实例列表,但只生成处于available状态的数据库实例的列表。该脚本可以忽略已停止的数据库实例,因为它们将具有不同的状态值,如stoppedstopping

$ aws rds describe-db-instances \ --query '*[].{DBInstanceArn:DBInstanceArn,DBInstanceStatus:DBInstanceStatus}|[?DBInstanceStatus == `available`]|[].{DBInstanceArn:DBInstanceArn}' \ --output text arn:aws:rds:us-east-1:123456789102:db:db-instance-2447 arn:aws:rds:us-east-1:123456789102:db:db-instance-3395 arn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance arn:aws:rds:us-east-1:123456789102:db:pg2-db-instance
提示

一旦熟悉了分配标签和查找具有这些标签的数据库实例的常规过程,您便可以使用相同的技术以其他方式降低成本。例如,在这种数据库实例用于开发和测试的情景下,您可以指定一些数据库实例在每天结束时删除,或者在预期使用率较低时将其数据库实例更改为小型数据库实例类。

使用标签在 AWS Backup 中启用备份

AWS Backup 是一项完全托管的备份服务,可在云中以及本地方便地集中管理和自动执行跨 AWS 服务的数据备份。您可以在 AWS Backup 中管理 Amazon RDS 数据库实例的备份。

要在 AWS Backup 中启用备份,您可以使用资源标记将数据库实例与备份计划关联起来。

此示例假定您已在 AWS Backup 中创建了一个备份计划。您对数据库实例使用的标签与备份计划中使用的标签完全相同,如下图所示。

有关 AWS Backup 的更多信息,请参阅 AWS Backup 开发人员指南

您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 为数据库实例分配标签。以下示例适用于控制台和 CLI。

为数据库实例分配标签

  1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台:https://console.amazonaws.cn/rds/

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

  3. 选择要为其分配标签的数据库实例的链接。

  4. 在数据库详细信息页面上,选择Tags(标签)选项卡。

  5. Tags(标签)下,选择 Add tags(添加标签)。

  6. Add tags(添加标签)下:

    1. Tag key(标签键)中输入 BackupPlan

    2. Value(值)中输入 Test

    3. 选择 Add

结果随后显示在 Tags(标签)下。

为数据库实例分配标签

  • 使用以下 CLI 命令:

    对于 Linux、macOS 或 Unix:

    aws rds add-tags-to-resource \ --resource-name arn:aws:rds:us-east-1:123456789012:db:new-orcl-db \ --tags Key=BackupPlan,Value=Test

    对于 Windows:

    aws rds add-tags-to-resource ^ --resource-name arn:aws:rds:us-east-1:123456789012:db:new-orcl-db ^ --tags Key=BackupPlan,Value=Test

add-tags-to-resource CLI 命令没有返回输出。

确认数据库实例已标记

  • 使用以下 CLI 命令:

    对于 Linux、macOS 或 Unix:

    aws rds list-tags-for-resource \ --resource-name arn:aws:rds:us-east-1:123456789012:db:new-orcl-db

    对于 Windows:

    aws rds list-tags-for-resource ^ --resource-name arn:aws:rds:us-east-1:123456789012:db:new-orcl-db

list-tags-for-resource CLI 命令将返回以下输出:

{ "TagList": [ { "Key": "BackupPlan", "Value": "Test" } ] }