

# 在 DynamoDB 中向资源添加标记和标签
<a name="Tagging"></a>

您可 Amazon DynamoDB 用*标签*。标签可让您按各种方法对资源进行分类，例如，按用途、所有者、环境或其他标准。标签可帮助您：
+ 根据您分配到资源的标签来快速识别资源。
+ 按标签查看 AWS 账单细分。
**注意**  
与添加了标签的表相关的任意本地二级索引 (LSI) 和全局二级索引 (GSI) 会自动使用相同的标签。目前，无法为 DynamoDB Streams 使用情况添加标签。

支持添加标签 AWS 服务，如 Amazon EC2、Amazon S3、DynamoDB 等。有效的标签让您可对具有特定标签的服务创建报告，从而提供成本分析。

要开始使用标签，请执行以下操作：

1. 了解 [DynamoDB 中的标签限制](#TaggingRestrictions)。

1. 使用 [在 DynamoDB 中为资源添加标签](Tagging.Operations.md) 创建标签。

1. 使用 [使用 DynamoDB 标记创建成本分配报告](#CostAllocationReports) 跟踪各个活动标签的 AWS 成本。

最后，最佳实践是遵循最佳标签策略。有关信息，请参阅 [AWS 标记策略](https://d0.awsstatic.com/aws-answers/AWS_Tagging_Strategies.pdf)。

## DynamoDB 中的标签限制
<a name="TaggingRestrictions"></a>

 每个标签都由密钥和值组成，这两个参数都由您指定。以下限制适用：
+  每个 DynamoDB 表的同一个键只能有一个标签。如果您尝试添加现有标签（相同键），现有标签值会更新为新值。
+  标签键和值区分大小写。
+  最大键长度为 128 个 Unicode 字符。
+ 最大值长度为 256 个 Unicode 字符。
+  允许的字符包括字母、空格和数字，以及以下特殊字符：`+ - = . _ : /`
+  每个资源的最大标签数是 50。
+ 表中所有标签支持的最大大小为 10 KB。
+ AWS 分配的标签名称和值将自动被分配 `aws:` 前缀，您无法分配该前缀。AWS 分配的标签名称不计入标签限制 50 或最大大小限制 10 K。用户分配的标签名称在成本分配报告中具有 `user:` 前缀。
+  您不能回溯标签的应用日期。

# 在 DynamoDB 中为资源添加标签
<a name="Tagging.Operations"></a>

您可以使用 Amazon DynamoDB 控制台或 AWS Command Line Interface (AWS CLI) 添加、列出、编辑或删除标签。然后，您可以激活这些用户定义的标签，以便在 AWS 账单与成本管理 控制台上显示这些标签以进行成本分配跟踪。有关更多信息，请参阅 [使用 DynamoDB 标记创建成本分配报告](Tagging.md#CostAllocationReports)。

 对于批量编辑，您还可以使用 AWS 管理控制台 中的标签编辑器。有关更多信息，请参阅[使用标签编辑器](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/tag-editor.html)。

 要改用 DynamoDB API，请参阅 [Amazon DynamoDB API 参考](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/)的以下操作：
+ [TagResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TagResource.html)
+ [UntagResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UntagResource.html)
+ [ListTagsOfResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListTagsOfResource.html)

**Topics**
+ [设置按标签筛选的权限](#Tagging.Operations.permissions)
+ [将标签添加到新的或现有的表 (AWS 管理控制台)](#Tagging.Operations.using-console)
+ [将标签添加到新的或现有的表 (AWS CLI)](#Tagging.Operations.using-cli)

## 设置按标签筛选的权限
<a name="Tagging.Operations.permissions"></a>

要在 DynamoDB 控制台中使用标签筛选表列表，请确保用户的策略包括对以下操作的访问权限：
+ `tag:GetTagKeys`
+ `tag:GetTagValues`

您可以通过按照以下步骤，向您的用户附加新的 IAM policy 来访问这些操作。

1. 以管理员用户身份登录 [IAM 控制台](https://console.aws.amazon.com/iam/)。

1. 在左侧导航菜单中，选择“策略”。

1. 选择“创建策略”。

1. 将以下策略粘贴到 JSON 编辑器中。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "tag:GetTagKeys",
                   "tag:GetTagValues"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. 完成向导并为策略指定名称（例如，`TagKeysAndValuesReadAccess`）。

1. 在左侧导航菜单中，选择“用户”。

1. 从该列表中选择您通常用于访问 DynamoDB 控制台的用户。

1. 选择“添加权限”。

1. 选择“直接附加现有策略”。

1. 从列表中选择您之前创建的策略。

1. 完成向导。

## 将标签添加到新的或现有的表 (AWS 管理控制台)
<a name="Tagging.Operations.using-console"></a>

您可以使用 DynamoDB 控制台在创建新表时在表中添加标签，或添加、编辑或删除现有表的标签。

**在创建时标记资源（控制台）**

1. 登录 AWS 管理控制台，打开 DynamoDB 控制台：[https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/)。

1. 在导航窗格中，选择 **Tables (表)**，然后选择 **Create table (创建表)**。

1. 在 **Create DynamoDB table (创建 DynamoDB 表)** 页面上，提供名称和主键。在 **Tags (标签)** 部分，选择 **Add new tag (添加新标签)**，然后输入要使用的标签。

   有关标签结构的信息，请参阅 [DynamoDB 中的标签限制](Tagging.md#TaggingRestrictions)。

   有关创建表的更多信息，请参阅 [针对 DynamoDB 表的基本操作](WorkingWithTables.Basics.md)。

**标记现有资源（控制台）**

打开 DynamoDB 控制台：[https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/)。

1. 在导航窗格中，选择**表**。

1. 选择列表中的表，然后选择 **Additional settings (其他设置)** 选项卡。在页面底部的 **Tags(标签)** 部分中，可以添加、编辑或删除标签。

## 将标签添加到新的或现有的表 (AWS CLI)
<a name="Tagging.Operations.using-cli"></a>

以下示例说明了如何在创建表和索引时使用 AWS CLI 指定标签以及标记现有的资源。

**在创建时标记资源 (AWS CLI)**
+ 以下示例创建一个新的 `Movies` 表，并添加具有 `Owner` 值的 `blueTeam` 标签：

  ```
  aws dynamodb create-table \
      --table-name Movies \
      --attribute-definitions AttributeName=Title,AttributeType=S \
      --key-schema AttributeName=Title,KeyType=HASH \
      --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \
      --tags Key=Owner,Value=blueTeam
  ```

**标记现有的资源 (AWS CLI)**
+ 以下示例为 `Owner` 表添加具有 `blueTeam` 值的 `Movies` 标签：

  ```
  aws dynamodb tag-resource \
      --resource-arn arn:aws:dynamodb:us-east-1:123456789012:table/Movies \
      --tags Key=Owner,Value=blueTeam
  ```

**列出表的所有标签 (AWS CLI)**
+ 以下示例列出与 `Movies` 表关联的所有标签：

  ```
  aws dynamodb list-tags-of-resource \
      --resource-arn arn:aws:dynamodb:us-east-1:123456789012:table/Movies
  ```

## 使用 DynamoDB 标记创建成本分配报告
<a name="CostAllocationReports"></a>

AWS 使用标签组织成本分配报告上的资源成本。AWS 提供了两种类型的成本分配标签：
+ AWS 生成的标签 AWS 为您定义、创建和应用此标签。
+ 用户定义的标签。您定义、创建和应用这些标签。

您必须先分别激活两种类型的标签，然后这些标签才能显示在 Cost Explorer 中或成本分配报告上。

 要激活 AWS 生成的标签：

1.  登录 AWS 管理控制台，打开 Billing and Cost Management 控制台：[https://console.aws.amazon.com/billing/home\$1/](https://console.aws.amazon.com/billing/home#/.)。

1.  在导航窗格中，选择 **Cost Allocation Tags (成本分配标签)**。

1.  在 **AWS 生成的成本分配标签**下，选择**激活**。

 激活用户定义的标签：

1.  登录 AWS 管理控制台，打开 Billing and Cost Management 控制台：[https://console.aws.amazon.com/billing/home\$1/](https://console.aws.amazon.com/billing/home#/.)。

1.  在导航窗格中，选择 **Cost Allocation Tags (成本分配标签)**。

1.  在 **User-Defined Cost Allocation Tags (用户生成的成本分配标签)** 下，选择 **Activate (激活)**。

 创建并激活标签后，AWS 生成成本分配报告，其中按活动标签分组了使用情况和成本。成本分配报告包括您每个账单周期的所有 AWS 成本。该报告包括标记资源和未标记资源，因此您可以清晰地排列资源费用。

**注意**  
 目前，从 DynamoDB 传出的所有数据不会在成本分配报告上按标签细分。

 有关更多信息，请参阅[使用成本分配标签](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html)。