

# 为 Amazon RDS 资源添加标签
<a name="USER_Tagging"></a><a name="tagging"></a>

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

可以使用 AWS 管理控制台、AWS CLI 或 Amazon RDS API 添加、列出和删除 Amazon RDS 资源上的标签。在使用 CLI 或 API 时，确保提供要使用的 RDS 资源的 Amazon 资源名称（ARN）。有关构造 ARN 的详细信息，请参阅[构建 Amazon RDS 的 ARN](USER_Tagging.ARN.Constructing.md)。

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

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

您可以标记以下 Amazon RDS 资源：
+ 数据库实例数
+ 数据库集群
+ Aurora 全局集群
+ 数据库集群端点
+ 只读副本
+ 数据库快照
+ 数据库集群快照
+ 预留数据库实例
+ 事件订阅
+ 数据库选项组
+ 数据库参数组
+ 数据库集群参数组
+ 数据库子网组
+ RDS 代理
+ RDS Proxy 端点
+ 蓝绿部署
+ 零 ETL 集成
+ 自动备份
+ 集群自动备份

**注意**  
当您为数据库实例添加标签时，Amazon RDS 会自动将这些标签应用于关联的性能详情资源。目前，您无法使用 AWS 管理控制台 标记 RDS 代理和 RDS 代理端点。

**Topics**
+ [为什么要使用 Amazon RDS 资源标签？](#Tagging.Purpose)
+ [Amazon RDS 资源标签的工作原理](#Overview.Tagging)
+ [标记 Amazon RDS 资源的最佳实践](#Tagging.best-practices)
+ [将标签复制到数据库快照](#USER_Tagging.CopyTags)
+ [标记自动备份资源](#USER_Tagging.AutomatedBackups)
+ [在 Amazon RDS 中添加和删除标签](#Tagging.HowTo)
+ [教程：使用标签指定要停止的数据库实例](Tagging.RDS.Autostop.md)

## 为什么要使用 Amazon RDS 资源标签？
<a name="Tagging.Purpose"></a>

您可使用标签执行以下操作：
+ 按应用程序、项目、部门、环境等对 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](UsingWithRDS.IAM.md)，以及《AWS Identity and Access Management 用户指南》**中的[控制对 AWS 资源的访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-resources)。
+ 根据标签监控资源。例如，您可以为已标记 `environment=prod` 的数据库实例创建 Amazon CloudWatch 控制面板。
+ 通过将具有类似标签的资源的费用分组在一起来跟踪成本。例如，如果您使用 `project=Salix` 标记与 Salix 项目关联的 RDS 资源，则可以为该项目生成成本报告并为该项目分配费用。有关更多信息，请参阅 [如何将 AWS 账单与 Amazon RDS 中的标签结合使用](#Tagging.Billing)。

## Amazon RDS 资源标签的工作原理
<a name="Overview.Tagging"></a>

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

**Topics**
+ [Amazon RDS 中的标签集](#Overview.Tagging.Sets)
+ [Amazon RDS 中的标签结构](#Overview.Tagging.Structure)
+ [符合标记条件的 Amazon RDS 资源](#Overview.Tagging.Resources)
+ [如何将 AWS 账单与 Amazon RDS 中的标签结合使用](#Tagging.Billing)

### Amazon RDS 中的标签集
<a name="Overview.Tagging.Sets"></a>

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

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

### Amazon RDS 中的标签结构
<a name="Overview.Tagging.Structure"></a>

RDS 标签的结构如下所示：

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

**标签值**  
值是标签的可选字符串值。该字符串值的长度必须在 1 到 256 个 Unicode 字符之间。字符串只能包含 Unicode 字母、数字、空格、`_`、`.`、`:`、`/`、`=`、`+`、`-` 和 `@` 的集合。Java 正则表达式是 `"^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$"`。标签值区分大小写。因此，值 `prod` 和 `Prod` 是不同的。  
在标签集中，值无需具有唯一性，且可为空值。例如，在 `project=Trinity` 和 `cost-center=Trinity` 的标签集中，可以存在键-值对。

### 符合标记条件的 Amazon RDS 资源
<a name="Overview.Tagging.Resources"></a>

您可以标记以下 Amazon RDS 资源：
+ 数据库实例
+ 数据库集群
+ 数据库集群端点
+ 只读副本
+ 数据库快照
+ 数据库集群快照
+ 预留数据库实例
+ 事件订阅
+ 数据库选项组
+ 数据库参数组
+ 数据库集群参数组
+ 数据库子网组
+ RDS 代理
+ RDS 代理端点
**注意**  
目前，您无法使用 AWS 管理控制台 标记 RDS 代理和 RDS 代理端点。
+ 蓝绿部署
+ 零 ETL 集成（预览版）
+ 自动备份
+ 集群自动备份

### 如何将 AWS 账单与 Amazon RDS 中的标签结合使用
<a name="Tagging.Billing"></a>

使用标签来组织 AWS 账单以反映您自身的成本结构。要执行此操作，请注册以获取包含标签键值的 AWS 账户账单。然后，如需查看组合资源的成本，请按有同样标签键值的资源组织您的账单信息。例如，您可以将特定的应用程序名称用作几个资源的标签，然后组织账单信息，以查看在数个服务中的使用该应用程序的总成本。有关更多信息，请参阅《AWS Billing 用户指南》**中的[使用成本分配标签](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html)。

#### 成本分配标签如何与数据库快照结合使用
<a name="Tagging.Billing.Snapshots"></a>

您可以向数据库快照添加标签。但是，您的账单不会反映此分组。必须满足以下条件，才能将成本分配标签应用于数据库快照：
+ 标签必须附加到父数据库实例。
+ 父数据库实例必须与数据库快照在同一 AWS 账户中。
+ 父数据库实例必须与数据库快照在同一 AWS 区域中。

如果数据库快照与父数据库实例不在同一区域中，或者如果删除了父数据库实例，则这些快照将被视为孤立快照。孤立的数据库快照不支持成本分配标签。孤立快照的成本会汇总到单个未标记的行项目中。满足以下条件时，跨账户数据库快照将不会被视为孤立快照：
+ 这些快照与父数据库实例在同一区域中。
+ 父数据库实例由源账户所有。
**注意**  
如果父数据库实例由其他账户所有，则成本分配标签不适用于目标账户中的跨账户快照。

## 标记 Amazon RDS 资源的最佳实践
<a name="Tagging.best-practices"></a>

在使用标签时，建议您遵循以下最佳实践：
+ 记录组织中所有团队所遵循的标签使用惯例。具体而言，请确保名称既具有描述性又保持一致。例如，对格式 `environment:prod` 进行标准化，而不是使用 `env:production` 标记某些资源。
**重要**  
请勿在标签中存储个人身份信息（PII）或其他机密或敏感信息。
+ 自动添加标记以确保一致性。例如，您可以使用以下方法：
  + 在 CloudFormation 模板中包含标签。在使用模板创建资源时，系统会自动标记资源。
  + 使用 AWS Lambda 函数定义和应用标签。
  + 创建一个 SSM 文档，其中包含向 RDS 资源添加标签的步骤。
+ 仅在必要时使用标签。您最多可以为单个 RDS 资源添加 50 个标签，但最佳实践是避免不必要的标签激增和复杂性。
+ 定期检查标签的相关性和准确性。根据需要删除或修改已过时的标签。
+ 考虑在 AWS 管理控制台中使用 AWS 标签编辑器创建标签。您可以使用标签编辑器同时向多个受支持的 AWS 资源（包括 RDS 资源）添加标签。有关更多信息，请参阅 *AWS Resource Groups 用户指南*中的[标签编辑器](https://docs.aws.amazon.com/ARG/latest/userguide/tag-editor.html)。

## 将标签复制到数据库快照
<a name="USER_Tagging.CopyTags"></a>

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

您可以为以下操作指定将标签复制到数据库快照：
+ 创建数据库实例
+ 还原数据库实例
+ 创建只读副本
+ 复制数据库快照

要复制上述操作的标签，请在 AWS 管理控制台中选择**将标签复制到快照**，或者在 AWS CLI 中指定 `--copy-tags-to-snapshot`。复制数据库快照时，只有在同一账户中复制数据库快照时，才能复制关联的标签。跨账户复制数据库快照时，无法复制标签。

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

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

**注意**  
在某些情况下，您可以为 AWS CLI 命令 [create-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-snapshot.html) 的 `--tags` 参数包含一个值。或者，您可以为 [CreateDBSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBSnapshot.html) API 操作提供至少一个标签。在这些情况下，RDS 不会将标签从源数据库实例复制到新的数据库快照。即使源数据库实例已开启 `--copy-tags-to-snapshot`（`CopyTagsToSnapshot`）选项，此功能也适用。  
如果您采用此方法，则可以从数据库快照创建数据库实例的副本。这种方法可避免添加不适用于新数据库实例的标签。您可以使用 AWS CLI `create-db-snapshot` 命令（或 `CreateDBSnapshot` RDS API 操作）创建数据库快照。创建数据库快照后，可以按本主题后面所述添加标签。

## 标记自动备份资源
<a name="USER_Tagging.AutomatedBackups"></a>

当您将备份保留期值从 0 设置为大于 0 时，就会创建自动备份资源。在创建过程中，您可以使用 `--tag-specifications` 参数标记实例或集群自动备份资源。

### 标签规格参数
<a name="USER_Tagging.AutomatedBackups.TagSpecifications"></a>

支持 `--tag-specifications` 请求参数的 API（例如 [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)、[restore-db-instance-from-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html)、[create-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html) 等）可以在创建过程中标记自动备份（资源类型：`auto-backup` 或 `cluster-auto-backup`）。

#### 标记实例自动备份
<a name="USER_Tagging.AutomatedBackups.TagSpecifications.Instance"></a>

在创建或修改启用了自动备份的数据库实例时，将 `--tag-specifications` 与 `ResourceType=auto-backup` 结合使用。

#### 标记集群自动备份
<a name="USER_Tagging.AutomatedBackups.TagSpecifications.Cluster"></a>

在创建启用了自动备份的数据库集群时，将 `--tag-specifications` 与 `ResourceType=cluster-auto-backup` 结合使用。

#### 在修改数据库实例时标记自动备份
<a name="USER_Tagging.AutomatedBackups.TagSpecifications.ModifyBehavior"></a>

 只有在将备份保留期从 0 设置为大于 0 时，才能使用 `--tag-specifications` 标记自动备份。如果自动备份已经存在，请改用 [AddTagsToResource](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_AddTagsToResource.html) API。

**注意**  
自动备份标签独立于源数据库实例标签、数据库集群标签或数据库快照标签。

## 在 Amazon RDS 中添加和删除标签
<a name="Tagging.HowTo"></a>

您可执行以下操作：
+ 在创建资源的同时创建标签，例如在运行 AWS CLI 命令 `create-db-instance` 时。
+ 使用命令 `add-tags-to-resource` 向现有资源添加标签。
+ 使用命令 `list-tags-for-resource` 列出与特定资源关联的标签。
+ 使用命令 `add-tags-to-resource` 更新标签。
+ 使用命令 `remove-tags-from-resource` 从资源中删除标签。

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

### 控制台
<a name="USER_Tagging.CON"></a>

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

**要向数据库实例添加标签，请执行以下操作：**

1. 登录AWS 管理控制台并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择 **Databases (数据库)**。
**注意**  
要在**数据库**窗格中筛选数据库实例的列表，对于**筛选数据库**，输入文本字符串。只会显示包含该字符串的数据库实例。

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

1. 在详细信息部分中，向下滚动到**标签**部分。

1. 选择 **Add**。将显示**添加标签**窗口。  
![\[“Add tags (添加标签)”窗口\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/RDSConsoleTagging5.png)

1. 为**标签键**和**值**输入一个值。

1. 要添加其他标签，您可以选择**添加其他标签**，并为其**标签键**和**值**输入一个值。

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

1. 选择 **Add**。

**删除数据库实例的标签**

1. 登录AWS 管理控制台并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择 **Databases (数据库)**。
**注意**  
要在**数据库**窗格中筛选数据库实例的列表，请在**筛选数据库**框输入文本字符串。只会显示包含该字符串的数据库实例。

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

1. 在详细信息部分中，向下滚动到**标签**部分。

1. 选择要删除的标签。  
![\[“Tags (标签)”部分\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/RDSConsoleTagging6.png)

1. 选择 **Delete (删除)**，然后在 **Delete tags (删除标签)** 窗口中选择 **Delete (删除)**。

### AWS CLI
<a name="USER_Tagging.CLI"></a>

可以使用 AWS CLI 为数据库实例添加、列出或删除标签。
+ 要将一个或多个标签添加到 Amazon RDS 资源，请使用 AWS CLI 命令 [https://docs.aws.amazon.com/cli/latest/reference/rds/add-tags-to-resource.html](https://docs.aws.amazon.com/cli/latest/reference/rds/add-tags-to-resource.html)。
+ 要列出 Amazon RDS 资源上的标签，请使用 AWS CLI 命令 [https://docs.aws.amazon.com/cli/latest/reference/rds/list-tags-for-resource.html](https://docs.aws.amazon.com/cli/latest/reference/rds/list-tags-for-resource.html)。
+ 要从 Amazon RDS 资源中删除一个或多个标签，请使用 AWS CLI 命令 [https://docs.aws.amazon.com/cli/latest/reference/rds/remove-tags-from-resource.html](https://docs.aws.amazon.com/cli/latest/reference/rds/remove-tags-from-resource.html)。

要了解有关如何构建所需 ARN 的更多信息，请参阅[构建 Amazon RDS 的 ARN](USER_Tagging.ARN.Constructing.md)。

### RDS API
<a name="USER_Tagging.API"></a>

您可使用 Amazon RDS API 为数据库实例添加、列出或删除标签。
+ 要向 Amazon RDS 资源添加标签，请使用 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_AddTagsToResource.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_AddTagsToResource.html) 操作。
+ 要列出分配给 Amazon RDS 资源的标签，请使用 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ListTagsForResource.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ListTagsForResource.html)。
+ 要从 Amazon RDS 资源删除标签，请使用 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RemoveTagsFromResource.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RemoveTagsFromResource.html) 操作。

要了解有关如何构建所需 ARN 的更多信息，请参阅[构建 Amazon RDS 的 ARN](USER_Tagging.ARN.Constructing.md)。

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

```
 1. <Tagging>
 2.       <TagSet>
 3.           <Tag>
 4.               <Key>Project</Key>
 5.               <Value>Trinity</Value>
 6.           </Tag>
 7.           <Tag>
 8.               <Key>User</Key>
 9.               <Value>Jones</Value>
10.           </Tag>
11.       </TagSet>
12.   </Tagging>
```

下表提供了允许使用的 XML 标签及其特征的列表。`Key` 和 `Value` 的值区分大小写。例如，`project=Trinity` 和 `PROJECT=Trinity` 是不同的标签。


****  
<a name="user-tag-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/USER_Tagging.html)

# 教程：使用标签指定要停止的数据库实例
<a name="Tagging.RDS.Autostop"></a>

本教程假设您在开发或测试环境中有多个数据库实例。您需要将这些数据库数据库实例保留几天。一些数据库实例在夜间运行测试，而其他数据库实例可在夜间停止运行，并在第二天重新开始运行。

以下教程说明如何为适合在夜间停止运行的数据库实例分配标签。本教程说明脚本如何检测哪些数据库实例具有该标签及随后停止已标记的数据库实例。在此示例中，键值对的值部分无关紧要。存在`stoppable`标签表示数据库实例具有此用户定义的属性。

在以下教程中，用于标记的命令和 API 使用 ARN，这可让 RDS 跨 AWS 区域、AWS 账户以及不同类型的资源（这些资源可能具有相同的短名称）无缝工作。您可以在数据库实例上运行的 CLI 命令中指定 ARN 代替数据库实例 ID。

**指定要停止的数据库实例**

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

   在以下示例中，将自己的数据库实例名称替换为 *dev-test-db-instance*。在使用 ARN 参数的后续命令中，替换自己的数据库实例的 ARN。ARN 包含您自己的 AWS 账户 ID 和数据库实例所在的 AWS 区域的名称。

   ```
   $ aws rds describe-db-instances --db-instance-identifier dev-test-db-instance \
     --query "*[].{DBInstance:DBInstanceArn}" --output text
   arn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance
   ```

1. 将标签 `stoppable` 添加至此数据库实例。

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

   ```
   $ aws rds add-tags-to-resource \
     --resource-name arn:aws:rds:us-east-1:123456789102:db:dev-test-db-instance \
     --tags Key=stoppable
   ```

1. 确认数据库实例中存在标签。

   以下命令以 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
   ```

1. 停止所有被指定为 `stoppable` 的数据库实例。

   以下示例创建一个文本文件，其中列出了所有数据库实例。Shell 命令循环访问该列表，并检查每个数据库实例是否都标记有相关属性，并为每个数据库实例运行命令 `aws rds stop-db-instance`。

   ```
   $ 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`状态的数据库实例的列表。该脚本可以忽略已停止的数据库实例，因为它们将具有不同的状态值，如`stopped`或`stopping`。

```
$ 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
```

**提示**  
您可以将分配标签的过程与查找带这些标签的数据库实例的过程结合使用，以其他方式降低成本。我们以用于开发和测试的数据库实例为例。在这种情况下，您可以指定在每天结束时删除一些数据库实例。或者，您可以指定它们在预期使用率较低的时期，将其数据库实例更改为小型数据库实例类。