

# 使用 DynamoDB 中的表和数据
<a name="WorkingWithTables"></a>

本部分介绍如何使用 AWS Command Line Interface (AWS CLI) 和 AWS SDK 在 Amazon DynamoDB 中创建、更新和删除表。

**注意**  
您还可以使用 AWS 管理控制台 执行这些任务。有关更多信息，请参阅 [使用控制台](AccessingDynamoDB.md#ConsoleDynamoDB)。

此部分还提供了有关吞吐容量、DynamoDB Auto Scaling 的使用方式或手动设置预配置吞吐量的更多信息。

**Topics**
+ [

# 针对 DynamoDB 表的基本操作
](WorkingWithTables.Basics.md)
+ [

# 在 DynamoDB 中选择表类时的注意事项
](WorkingWithTables.tableclasses.md)
+ [

# 在 DynamoDB 中向资源添加标记和标签
](Tagging.md)

# 针对 DynamoDB 表的基本操作
<a name="WorkingWithTables.Basics"></a>

类似于其他数据库系统，Amazon DynamoDB 将数据存储在表中。您可以使用一些基本操作来管理表。

**Topics**
+ [

## 创建表
](#WorkingWithTables.Basics.CreateTable)
+ [

## 描述表
](#WorkingWithTables.Basics.DescribeTable)
+ [

## 更新表
](#WorkingWithTables.Basics.UpdateTable)
+ [

## 删除表
](#WorkingWithTables.Basics.DeleteTable)
+ [

## 使用删除保护
](#WorkingWithTables.Basics.DeletionProtection)
+ [

## 列出表名
](#WorkingWithTables.Basics.ListTables)
+ [

## 描述预调配的吞吐量配额
](#WorkingWithTables.Basics.DescribeLimits)

## 创建表
<a name="WorkingWithTables.Basics.CreateTable"></a>

使用 `CreateTable` 操作在 Amazon DynamoDB 中创建表。要创建表，您必须提供以下信息：
+ **表名 **() 此名称必须遵循 DynamoDB 命名规则，并且对当前 AWS 账户和区域必须唯一。例如，您可以创建 `People` 表中的美国东部（弗吉尼亚州北部）和另一个 `People` 表在欧洲地区（爱尔兰）。但是，这两个表彼此完全不同。有关更多信息，请参阅 [Amazon DynamoDB 中支持的数据类型和命名规则](HowItWorks.NamingRulesDataTypes.md)。
+ **主键。**主键可包含一个属性（分区键）或两个属性（分区键和排序键）。您需要提供每个属性的属性名称、数据类型和角色：`HASH`（针对分区键）和 `RANGE`（针对排序键）。有关更多信息，请参阅 [主键](HowItWorks.CoreComponents.md#HowItWorks.CoreComponents.PrimaryKey)。
+ **吞吐量设置（对于预置表）。**如果使用预置模式，则必须指定表的初始读取和写入吞吐量设置。您可以稍后修改这些设置，或启用 DynamoDB Auto Scaling 以管理设置。有关更多信息，请参阅[DynamoDB 预置容量模式](provisioned-capacity-mode.md)和[使用 DynamoDB Auto Scaling 自动管理吞吐能力](AutoScaling.md)。

### 示例 1：创建按需表
<a name="create-payperrequest-example"></a>

使用按需模式创建同一个表 `Music`。

```
aws dynamodb create-table \
    --table-name Music \
    --attribute-definitions \
        AttributeName=Artist,AttributeType=S \
        AttributeName=SongTitle,AttributeType=S \
    --key-schema \
        AttributeName=Artist,KeyType=HASH \
        AttributeName=SongTitle,KeyType=RANGE \
    --billing-mode=PAY_PER_REQUEST
```

`CreateTable` 操作返回表的元数据，如下所示。

```
{
    "TableDescription": {
        "TableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Music",
        "AttributeDefinitions": [
            {
                "AttributeName": "Artist",
                "AttributeType": "S"
            },
            {
                "AttributeName": "SongTitle",
                "AttributeType": "S"
            }
        ],
        "ProvisionedThroughput": {
            "NumberOfDecreasesToday": 0,
            "WriteCapacityUnits": 0,
            "ReadCapacityUnits": 0
        },
        "TableSizeBytes": 0,
        "TableName": "Music",
        "BillingModeSummary": {
            "BillingMode": "PAY_PER_REQUEST"
        },
        "TableStatus": "CREATING",
        "TableId": "12345678-0123-4567-a123-abcdefghijkl",
        "KeySchema": [
            {
                "KeyType": "HASH",
                "AttributeName": "Artist"
            },
            {
                "KeyType": "RANGE",
                "AttributeName": "SongTitle"
            }
        ],
        "ItemCount": 0,
        "CreationDateTime": 1542397468.348
    }
}
```

**重要**  
 当对按需表调用 `DescribeTable` 时，读取容量单位和写入容量单位设置为 0。

### 示例 2：创建预置表
<a name="create-provisioned-example"></a>

以下 AWS CLI 示例说明了如何创建表 (`Music`)。主键包含 `Artist`（分区键）和 `SongTitle`（排序键），它们均具有 `String` 数据类型。此表的最大吞吐量为 10 个读取容量单位和 5 个写入容量单位。

```
aws dynamodb create-table \
    --table-name Music \
    --attribute-definitions \
        AttributeName=Artist,AttributeType=S \
        AttributeName=SongTitle,AttributeType=S \
    --key-schema \
        AttributeName=Artist,KeyType=HASH \
        AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput \
        ReadCapacityUnits=10,WriteCapacityUnits=5
```

`CreateTable` 操作返回表的元数据，如下所示。

```
{
    "TableDescription": {
        "TableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Music",
        "AttributeDefinitions": [
            {
                "AttributeName": "Artist",
                "AttributeType": "S"
            },
            {
                "AttributeName": "SongTitle",
                "AttributeType": "S"
            }
        ],
        "ProvisionedThroughput": {
            "NumberOfDecreasesToday": 0,
            "WriteCapacityUnits": 5,
            "ReadCapacityUnits": 10
        },
        "TableSizeBytes": 0,
        "TableName": "Music",
        "TableStatus": "CREATING",
        "TableId": "12345678-0123-4567-a123-abcdefghijkl",
        "KeySchema": [
            {
                "KeyType": "HASH",
                "AttributeName": "Artist"
            },
            {
                "KeyType": "RANGE",
                "AttributeName": "SongTitle"
            }
        ],
        "ItemCount": 0,
        "CreationDateTime": 1542397215.37
    }
}
```

这些区域有：`TableStatus` 元素指示表的当前状态 (`CREATING`)。创建表可能需要一段时间，具体取决于您为 `ReadCapacityUnits` 和 `WriteCapacityUnits` 指定的值。二者的值越大，DynamoDB 需要为表分配的资源就越多。

### 示例 3：使用“DynamoDB 标准 – 不频繁访问”表类别创建表
<a name="create-infrequent-access-example"></a>

要使用“DynamoDB 标准-不经常访问”表类别创建相同的 `Music` 表。

```
aws dynamodb create-table \
    --table-name Music \
    --attribute-definitions \
        AttributeName=Artist,AttributeType=S \
        AttributeName=SongTitle,AttributeType=S \
    --key-schema \
        AttributeName=Artist,KeyType=HASH \
        AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput \
        ReadCapacityUnits=10,WriteCapacityUnits=5 \
    --table-class STANDARD_INFREQUENT_ACCESS
```

`CreateTable` 操作返回表的元数据，如下所示。

```
{
    "TableDescription": {
        "TableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Music",
        "AttributeDefinitions": [
            {
                "AttributeName": "Artist",
                "AttributeType": "S"
            },
            {
                "AttributeName": "SongTitle",
                "AttributeType": "S"
            }
        ],
        "ProvisionedThroughput": {
            "NumberOfDecreasesToday": 0,
            "WriteCapacityUnits": 5,
            "ReadCapacityUnits": 10
        },
        "TableClassSummary": {
            "LastUpdateDateTime": 1542397215.37,
            "TableClass": "STANDARD_INFREQUENT_ACCESS"
        },
        "TableSizeBytes": 0,
        "TableName": "Music",
        "TableStatus": "CREATING",
        "TableId": "12345678-0123-4567-a123-abcdefghijkl",
        "KeySchema": [
            {
                "KeyType": "HASH",
                "AttributeName": "Artist"
            },
            {
                "KeyType": "RANGE",
                "AttributeName": "SongTitle"
            }
        ],
        "ItemCount": 0,
        "CreationDateTime": 1542397215.37
    }
}
```

## 描述表
<a name="WorkingWithTables.Basics.DescribeTable"></a>

要查看有关表的详细信息，请使用 `DescribeTable` 操作。您必须提供表名称。`DescribeTable` 的输出格式与 `CreateTable` 相同。它包括表创建时的时间戳、表的键架构、预配置吞吐量设置、表的估计大小以及存在的所有二级索引。

**重要**  
 当对按需表调用 `DescribeTable` 时，读取容量单位和写入容量单位设置为 0。

**Example**  

```
aws dynamodb describe-table --table-name Music
```

当 `TableStatus` 从 `CREATING` 更改为 `ACTIVE` 后，表即可供使用。

**注意**  
如果发出 `CreateTable` 请求后立即请求 `DescribeTable`，DynamoDB 可能会返回一个错误 (`ResourceNotFoundException`)。这是因为 `DescribeTable` 使用最终一致查询，并且表的元数据在此时可能不可用。请等待几秒钟，再尝试 `DescribeTable` 请求。  
出于记账目的，您的 DynamoDB 存储成本包含 100 字节的每项目开销。（有关更多信息，请转到 [DynamoDB 定价](https://aws.amazon.com/dynamodb/pricing/)。） 每项目的此额外 100 字节不会用于容量单位计算或用于 `DescribeTable` 操作。

## 更新表
<a name="WorkingWithTables.Basics.UpdateTable"></a>

利用 `UpdateTable` 操作，您可以执行下列操作之一：
+ 修改表的预置吞吐量设置（对于预置模式表）。
+ 更改表的读/写容量模式。
+ 在表上操作全局二级索引（请参阅 [在 DynamoDB 中使用全局二级索引](GSI.md)）。
+ 在表上启用或禁用 DynamoDB Streams（请参阅 [将更改数据捕获用于 DynamoDB Streams](Streams.md)）。

**Example**  
下面的 AWS CLI 示例说明如何修改表的预置吞吐量设置。  

```
aws dynamodb update-table --table-name Music \
    --provisioned-throughput ReadCapacityUnits=20,WriteCapacityUnits=10
```

**注意**  
在发出 `UpdateTable` 请求时，表的状态从 `AVAILABLE` 变为 `UPDATING`。该表仍然完全可用，而它是 `UPDATING`。完成此过程后，表状态将从 `UPDATING` 到 `AVAILABLE`。

**Example**  
下面的 AWS CLI 示例说明如何将表的读/写容量模式修改为按需模式。  

```
aws dynamodb update-table --table-name Music \
    --billing-mode PAY_PER_REQUEST
```

## 删除表
<a name="WorkingWithTables.Basics.DeleteTable"></a>

您可以通过 `DeleteTable` 操作移除未使用的表格。表的删除操作是不可恢复的。要使用 AWS 管理控制台删除表，请参阅[第 6 步：（可选）删除 DynamoDB 表以清理资源](getting-started-step-6.md)。

**Example**  
下面的 AWS CLI 示例说明如何删除表。  

```
aws dynamodb delete-table --table-name Music
```

在您发出 `DeleteTable` 请求时，表的状态从 `ACTIVE` 变为 `DELETING`。删除表可能需要一段时间，具体取决于它使用的资源（例如表中存储的数据以及表上的任何流或索引）。

在 `DeleteTable` 操作结束时，该表在 DynamoDB 中不再存在。

## 使用删除保护
<a name="WorkingWithTables.Basics.DeletionProtection"></a>

您可以使用删除保护属性保护表免遭意外删除。为表启用此属性有助于确保在管理员执行常规表管理操作期间不会意外删除表。这将有助于防止您的常规业务运营受到干扰。

 表所有者或授权管理员控制每个表的删除保护属性。默认情况下，每个表的删除保护属性为关闭状态。这包括全局副本和从备份中恢复的表。禁用表的删除保护后，任何获得 Identity and Access Management (IAM) 策略授权的用户都可以删除该表。当表启用了删除保护时，任何人都无法将其删除。

要更改此设置，请转到表的**其他设置**，导航到**删除保护**面板，然后选择**启用删除保护**。

DynamoDB 控制台、API、CLI/SDK 和 CloudFormation 都支持删除保护属性。`CreateTable` API 在创建表时支持删除保护属性，并且 `UpdateTable` API 支持更改现有表的删除保护属性。

**注意**  
如果删除了某个 AWS 账户，则该账户的所有数据（包括表）仍会在 90 天内被删除。
如果 DynamoDB 无法访问用于加密表的客户托管密钥，DynamoDB 仍将存档此表。存档包括备份表和删除原始表。

## 列出表名
<a name="WorkingWithTables.Basics.ListTables"></a>

`ListTables` 操作返回当前 AWS 账户和区域的 DynamoDB 表的名称。

**Example**  
下面的 AWS CLI 示例演示如何列出 DynamoDB 表名称。  

```
aws dynamodb list-tables
```

## 描述预调配的吞吐量配额
<a name="WorkingWithTables.Basics.DescribeLimits"></a>

`DescribeLimits` 操作会返回当前 AWS 账户和区域的当前读入容量配额。

**Example**  
下面的 AWS CLI 示例说明了如何描述当前的预置吞吐量配额。  

```
aws dynamodb describe-limits
```
输出显示当前 AWS 账户和区域的读入容量单位配额。

有关这些配额以及如何请求增加配额的更多信息，请参阅 [吞吐量默认限额](ServiceQuotas.md#default-limits-throughput)。

# 在 DynamoDB 中选择表类时的注意事项
<a name="WorkingWithTables.tableclasses"></a>

DynamoDB 提供两个表类别，旨在帮助您优化成本。“DynamoDB 标准”表类别是默认设置，建议用于绝大多数工作负载。“DynamoDB 标准-不经常访问 (DynamoDB Standard-IA)”表类别针对存储占据主要成本的表进行优化。例如，存储不经常访问数据的表（例如应用程序日志、旧的社交媒体帖子、电子商务订单历史记录以及过去的游戏成就）就适合使用 Standard-IA 表类别。

每个 DynamoDB 表都与一个表类别关联。与该表关联的所有二级索引都使用相同的表类。您可以在创建表时设置表类别（原定设置为“DynamoDB 标准”），然后使用 AWS 管理控制台、AWS CLI 或 AWS SDK 更新现有表的表类别。DynamoDB 还支持使用面向单区域表（非全局表）的 AWS CloudFormation 管理表类别。每个表类别都为数据存储以及读取和写入请求提供不同的定价。在为您的表选择表类别时，请注意以下几点：
+ DynamoDB 标准表类别提供的吞吐量成本低于 DynamoDB Standard-IA，对于吞吐量占据主要成本的表来说，是最具成本效益的选择。
+ DynamoDB Stand-IA 表类别提供的存储成本低于 DynamoDB Standard，对于存储成本占据主要成本的表来说，是最具成本效益的选择。当存储超过使用 DynamoDB 标准表类别的表吞吐量（读取和写入）成本的 50% 时，DynamoDB Standard-IA 表类别可以帮助您降低总体表成本。
+ DynamoDB 标准-IA 表提供与 DynamoDB 标准表相同的性能、耐久性和可用性。
+ 在 DynamoDB 标准和 DynamoDB 标准-IA 表类之间切换不需要更改应用程序代码。无论表使用哪种表类，您都可以使用相同的 DynamoDB API 和服务端点。
+ DynamoDB 标准-IA 表与所有现有 DynamoDB 功能兼容，例如自动扩缩、按需模式、生存时间（TTL）、按需备份、时间点恢复（PITR）和全局二级索引。

对于表而言，最具成本效益的表类别取决于表的预期存储和吞吐量使用模式。您可以通过 AWS 成本和使用情况报告以及 AWS Cost Explorer 查看表的历史存储和吞吐量成本以及使用情况。使用此历史数据为表确定最具成本效益的表类别。要了解有关使用 AWS 成本和使用情况报告以及 AWS Cost Explorer 的更多信息，请参阅 [AWS 计费和成本管理文档](https://docs.aws.amazon.com/account-billing/index.html)。请参阅 [Amazon DynamoDB 定价](https://aws.amazon.com/dynamodb/pricing/on-demand/)了解有关表类别定价的详细信息。

**注意**  
表类别更新是一个后台进程。在表类别更新期间，您仍然可以正常访问表。更新表类别的时间取决于表流量、存储大小和其他相关变量。在 30 天的跟踪时间内，不允许对表进行两次以上的表类别更新。

# 在 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)。