

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Amazon DocumentDB 弹性集群
<a name="docdb-using-elastic-clusters"></a>

Amazon DocumentDB 弹性集群支持 reads/writes 每秒数百万和存储容量为 PB 的工作负载。弹性集群还通过取消选择、管理或升级实例的需求，简化开发人员如何与 Amazon DocumentDB 互动。

**注意**  
弹性集群使用兼容 MongoDB 5.0 的有线协议。它们在 Amazon DocumentDB 引擎版本 8.0 上不受支持，也不适用于中国地区或。 AWS GovCloud

Amazon DocumentDB 弹性集群创建用于：
+ 为客户提供解决方案，这些客户寻求提供几乎无限扩展、附带丰富查询功能和 MongoDB API 兼容性的数据库。
+ 为客户提供更高连接限值，缩减修补造成的停机时间。
+ 继续为 JSON 工作负载投资于云原生、弹性和一流的架构。

 

**Topics**
+ [弹性集群用例](#elastic-use-cases)
+ [弹性集群的优势](#elastic-advantages)
+ [弹性集群区域和版本可用性](#elastic-region-version)
+ [限制](#elastic-limitations)
+ [Amazon DocumentDB 弹性集群：工作原理](elastic-how-it-works.md)
+ [开始使用 Amazon DocumentDB 弹性集群](elastic-get-started.md)
+ [Amazon DocumentDB 弹性集群最佳实践](elastic-best-practices.md)
+ [管理 Amazon DocumentDB 弹性集群](elastic-managing.md)
+ [用于 Amazon DocumentDB 弹性集群的静态数据加密](elastic-encryption.md)
+ [弹性集群中的服务关联角色](elastic-service-linked-roles.md)

## 弹性集群用例
<a name="elastic-use-cases"></a>

对于需要一个灵活架构以实现快速迭代开发的工作负载来说，文档数据库很有用。有关示例性 Amazon DocumentDB 用例，请参阅 [文档数据库使用案例](document-database-use-cases.md)。

以下是用例的一些示例， 弹性集群可以为这些用例提供显著的优势：

### 用户资料
<a name="elastic-use-case-user-profiles"></a>

由于文档数据库具有灵活架构，因此它们可以大规模地存储具有不同属性和数据值的文档。弹性集群是在线资料的实际解决方案，其中不同的用户提供不同类型的信息。假设您的应用支持数亿个用户配置文件。您可以使用弹性集群支持此类应用，因为它们可以横向和纵向扩展，以支持对这些用户配置文件的数百万次读写操作。您也可以在非高峰时段缩减，以降低成本。

### 内容管理和历史记录
<a name="elastic-use-case-content-mgmt-records"></a>

要有效地管理内容，您必须能够从各种来源收集和汇总内容，然后将其交付给客户。由于其灵活的架构，文档数据库非常适合用于收集和存储任何类型的数据。您可以使用它们来创建和引入新类型的内容，包括用户生成的内容，如图像、评论和视频。随着时间推移，数据库可能需要更多存储空间。借助弹性集群，您可以将数据分发到更多的存储卷上，让您能能够在单一集群中存储数千万亿字节数据。

## 弹性集群的优势
<a name="elastic-advantages"></a>



### AWS 服务集成
<a name="elastic-service-integration"></a>

亚马逊 DocumentDB 弹性集群与其他 AWS 服务集成的方式与亚马逊 DocumentDB 的集成方式相同：
+ **迁移** — 您可以使用 AWS Database Migration Service (DMS) 从 MongoDB 和其他关系数据库迁移到 Amazon DocumentDB 弹性集群。
+ **监控** — 您可以使用 Amazon 监控弹性集群的运行状况和性能 CloudWatch。
+ **安全** — 您可以通过 AWS Identity and Access Management (IAM) 设置身份验证和授权来管理您的弹性集群资源，例如创建和更新弹性集群，并使用 Amazon VPC 实现仅限 VPC 的安全连接。不支持对弹性集群使用 IAM 身份验证登录。
+ **数据管理** — 您可以使用 AWS Glue from/to 其他 AWS 服务（例如亚马逊 S3、Amazon Redshift 和亚马逊服务）来导入和导出数据。 OpenSearch 

## 弹性集群区域和版本可用性
<a name="elastic-region-version"></a>

### 弹性集群的区域可用性
<a name="elastic-region-availability"></a>

下表显示了当前可用 Amazon DocumentDB 弹性集群的 AWS 区域以及每个区域的终端节点。


| 区域名称 | Region | 可用区 | 
| --- | --- | --- | 
|  美国东部（弗吉尼亚州北部）  |  `us-east-1`  |  5  | 
|  美国东部（俄亥俄州）  |  `us-east-2`  |  3  | 
|  美国西部（俄勒冈州）  |  `us-west-2`  |  3  | 
|  亚太地区（香港）  |  `ap-east-1`  |  3  | 
|  亚太地区（孟买）  |  `ap-south-1`  |  3  | 
|  亚太地区（首尔）  |  `ap-northeast-2`  |  3  | 
|  亚太地区（新加坡）  |  `ap-southeast-1`  |  3  | 
|  亚太地区（悉尼）  |  `ap-southeast-2`  |  3  | 
|  亚太地区（东京）  |  `ap-northeast-1`  |  3  | 
|  加拿大（中部）  |  `ca-central-1`  |  3  | 
|  南美洲（圣保罗）  |  `sa-east-1`  |  3  | 
|  欧洲地区（法兰克福）  |  `eu-central-1`  |  3  | 
|  欧洲地区（爱尔兰）  |  `eu-west-1`  |  3  | 
|  欧洲地区（伦敦）  |  `eu-west-2`  |  3  | 
|  欧洲地区（米兰）  |  `eu-south-1`  |  3  | 
|  欧洲地区（巴黎）  |  `eu-west-3`  |  3  | 

### 版本可用性
<a name="elastic-version-availability"></a>

弹性集群支持兼容 MongoDB 5.0 的性线路协议。有关基于 Amazon DocumentDB 4.0 实例的集群与弹性集群之间的差异，请参阅 [Amazon DocumentDB 4.0 与弹性集群之间的功能差异](elastic-how-it-works.md#elastic-functional-differences)。注意：亚马逊 DocumentDB 8.0 不支持弹性集群 

## 限制
<a name="elastic-limitations"></a>



### 弹性集群管理
<a name="elastic-management-limitations"></a>

此版本*不*支持以下集群管理特性和功能：
+ 自定义端口（仅支持 27017）
+ 能够使用 IAM 用户和角色对数据库进行身份验证
+ 创建全局集群的能力
+ 现有 Amazon DocumentDB 事件和事件订阅
+ 范围分片
+ 对现有集合分片
+ 多字段分片密钥
+ 更改分片密钥
+ Point-in-time 恢复
+ 克隆
+ Performance Insights

**注意**  
有关弹性集群限值的信息，请参阅 [Amazon DocumentDB 配额和限制](limits.md)。

### 查询和写入操作
<a name="elastic-query-limitations"></a>

此版本*不*支持以下查询和写入操作命令和功能：
+ 扩展操作期间的 DDL 命令
+ Profiler
+ 参数组
+ AWS Config
+ AWS Backup

### 集合和索引管理
<a name="elastic-index-limits"></a>

此版本*不*支持以下集合和索引管理功能：
+ 唯一索引
+ 部分索引
+ 文本索引
+ 向量索引
+ 文档压缩

### 管理和诊断
<a name="elastic-admin-diagnostics-limitations"></a>

此版本*不*支持以下管理和诊断命令和功能：
+ AWS Secrets Manager
+ Role-based-access-control (RBAC) 自定义角色。
+ 连接时，不支持 0 写入关注。
+ 更改当前未分配给现有弹性集群的 VPC 所属的子网。

### 选择加入功能
<a name="elastic-opt-in-feature-limitations"></a>

此版本*不*支持以下 Amazon DocumentDB 选择加入功能：
+ ACID 事务
+ DDL/DML 审核
+ 变更流
+ 会话命令

# Amazon DocumentDB 弹性集群：工作原理
<a name="elastic-how-it-works"></a>

本节的主题提供有关支持 Amazon DocumentDB 弹性集群的机制和功能的信息。

**Topics**
+ [Amazon DocumentDB 弹性集群分片](#elastic-how-it-works.sharding)
+ [弹性集群迁移](#elastic-how-it-works-migration)
+ [弹性集群扩展](#elastic-how-it-works-scaling)
+ [弹性集群可靠性](#elastic-reliability)
+ [弹性集群存储和可用性](#how-it-works-storage)
+ [Amazon DocumentDB 4.0 与弹性集群之间的功能差异](#elastic-functional-differences)

## Amazon DocumentDB 弹性集群分片
<a name="elastic-how-it-works.sharding"></a>

Amazon DocumentDB 弹性集群使用基于哈希的分片在分布式存储系统中对数据进行分区。分片（也称为分区）将大型数据集拆分为跨多个节点的小型数据集，使您能够横向扩展数据库超出垂直扩展限值。弹性集群使用 Amazon DocumentDB 中计算和存储的分离或“解耦”，使您能够相互独立地扩展。弹性集群不是通过在计算节点之间移动小块数据进行集合重新分区，而是在分布式存储系统中高效复制数据。

![\[Amazon DocumentDB 弹性集群包含多个分片，用于将大型数据集拆分为较小的数据集，从而改善数据库扩展。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/shard-architecture.png)


### 分片定义
<a name="w2aac35c23b7b7"></a>

分片命名法的定义：
+ **分片**：一个分片为弹性集群提供计算。分片将有一个写入器实例和 0 到 15 个只读副本。默认情况下，一个分片将有两个实例：一个写入器和一个只读副本。您最多可以配置 32 个分片，每个分片实例的最大值为 64 v。CPUs
+ **分片密钥**：分片密钥是已分片集合的 JSON 文档中的一个必填字段，弹性集群使用该字段向匹配的分片分配读写流量。
+ **分片集合**：分片集合是其数据跨数据分区中弹性集群分布的一个集合。
+ **分区**：分区是已分片数据的逻辑部分。创建已分片集合时，数据将根据分片密钥自动组织到每个分片内的分区中。每个分片都有多个分区。

### 跨已配置分片分配数据
<a name="w2aac35c23b7b9"></a>

创建具有许多唯一值的分片密钥。良好分片密钥可以将您的数据跨底层分片均匀分配，从而让您的工作负载有最佳吞吐量和性能。以下示例是使用名为“user\$1id”的分片密钥的员工姓名数据：

![\[数据集中的数据均匀分布在多个分片中。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/sharding-detail-1.png)


DocumentDB 使用哈希分片跨底层分片进行数据分区。其他数据按相同方式插入和分配：

![\[新数据集中的数据通过哈希分片分布在各个分片中。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/sharding-detail-2.png)


当您通过添加额外分片横向扩展数据库时，Amazon DocumentDB 会自动重新分配数据：

![\[当向数据库添加额外分片时，数据集中的数据将被重新分配。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/sharding-detail-3.png)


## 弹性集群迁移
<a name="elastic-how-it-works-migration"></a>

Amazon DocumentDB 支持将分片的 MongoDB 数据迁移到弹性集群。支持离线、在线和混合迁移方法。有关更多信息，请参阅 [迁移到 Amazon DocumentDB](docdb-migration.md)。

## 弹性集群扩展
<a name="elastic-how-it-works-scaling"></a>

Amazon DocumentDB 弹性集群能够增加弹性集群中的分片数量（横向扩展），以及CPUs 应用于每个分片的 v 数（向上扩展）。您还可以根据需要减少分片数量和计算容量 (vCPUs)。

有关扩展的最佳实践，请参阅 [扩展弹性集群](elastic-best-practices.md#scaling)。

**注意**  
还提供集群级的扩展。有关更多信息，请参阅 [扩展 Amazon DocumentDB 集群](db-cluster-manage-performance.md)。

## 弹性集群可靠性
<a name="elastic-reliability"></a>

Amazon DocumentDB 的设计具有可靠、持久和容错的特点。为提高可用性，弹性集群按每个分片部署两个节点，跨不同可用区布置。Amazon DocumentDB 包括多种自动功能，使其成为很可靠的数据库解决方案。有关更多信息，请参阅 [Amazon DocumentDB 可靠性](how-it-works.md#how-it-works.reliability)。

## 弹性集群存储和可用性
<a name="how-it-works-storage"></a>

Amazon DocumentDB 数据存储在集群卷中，该卷是一个使用固态硬盘 () SSDs 的单个虚拟卷。一个集群卷由六个数据副本组成，这些副本会在单个 AWS 区域的多个可用区之间自动复制。此复制有助于确保您的数据具有高持久性，减少数据丢失的可能性。它还有助于确保在故障转移期间您的集群具有更高可用性，因为您的数据副本已存在于其他可用区中。有关存储、高可用性和复制的更多详情，请参阅 [Amazon DocumentDB：工作方式](how-it-works.md)。

## Amazon DocumentDB 4.0 与弹性集群之间的功能差异
<a name="elastic-functional-differences"></a>

Amazon DocumentDB 4.0 与弹性集群之间存在以下功能差异。
+ 来自 `top` 和 `collStats` 的结果按分片分区。对于分片集合，数据分布在多个分区之间，`collStats` 报告了来自各分区的聚合 `collScans`。
+ 当改变集群分片计数时，来自已分片集合的 `top` 和 `collStats` 的集合统计数据将重置。
+ 备份内置角色现在支持 `serverStatus`。操作：具有备份角色的开发人员和应用程序可以收集有关 Amazon DocumentDB 集群状态的统计量。
+ `SecondaryDelaySecs` 字段替换 `replSetGetConfig` 输出中的 `slaveDelay`。
+ `hello` 命令替换 `isMaster`：`hello` 返回描述弹性集群角色的一个文档。
+ 弹性集群中的 `$elemMatch` 运算符仅匹配某数组第一个嵌套级别中的文档。在 Amazon DocumentDB 4.0 中，运算符在返回已匹配文档之前遍历所有级别。例如：

```
db.foo.insert(
[
    {a: {b: 5}},
    {a: {b: [5]}},
    {a: {b: [3, 7]}},
    {a: [{b: 5}]},
    {a: [{b: 3}, {b: 7}]},
    {a: [{b: [5]}]},
    {a: [{b: [3, 7]}]},
    {a: [[{b: 5}]]},
    {a: [[{b: 3}, {b: 7}]]},
    {a: [[{b: [5]}]]},
    {a: [[{b: [3, 7]}]]}
]);
// Elastic clusters
> db.foo.find({a: {$elemMatch: {b: {$elemMatch: {$lt: 6, $gt: 4}}}}}, {_id: 0})
{ "a" : [ { "b" : [ 5 ] } ] }

// Docdb 4.0: traverse more than one level deep
> db.foo.find({a: {$elemMatch: {b: {$elemMatch: {$lt: 6, $gt: 4}}}}}, {_id: 0})
{ "a" : [ { "b" : [ 5 ] } ] }
{ "a" : [ [ { "b" : [ 5 ] } ] ] }
```
+ Amazon DocumentDB 4.0 中的“\$1”投影返回带所有字段的所有文档。对于弹性集群，带“\$1”投影的 `find` 命令返回匹配查询参数的文档，该参数仅含有匹配“\$1”投影的字段。
+ 在弹性集群中，带 `$regex` 和 `$options` 查询参数的 `find` 命令返回一个错误：“无法同时在 \$1regex 和 \$1options 中设置选项。”
+ 对于弹性集群，以下情况时，`$indexOfCP` 现在返回“-1”：
  + 未在 `string expression` 中找到子字符串，或
  + `start` 是一个大于 `end` 的数字，或
  + `start` 是一个大于字符串字节长度的数字。

  在 Amazon DocumentDB 4.0 中，当 `start` 位置是一个大于 `end` 或字符串字符串字节长度的数字时，`$indexOfCP` 返回“0”。
+ 对于弹性集群，`_id fields` 中的投影操作，例如 `{"_id.nestedField" : 1}`，返回仅包含所投影字段的文档。同时，在 Amazon DocumentDB 4.0 中，嵌套字段投影命令不会筛选掉任何文档。

# 开始使用 Amazon DocumentDB 弹性集群
<a name="elastic-get-started"></a>

这个入门部分将向您介绍如何创建和查询您的第一个弹性集群。

有许多连接和开始使用 Amazon DocumentDB 的方式。以下过程是用户开始使用我们强大文档数据库的最快捷、最简便的方法。本指南使用 [AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html) 直接从 AWS 管理控制台连接和查询 Amazon DocumentDB 集群。符合 AWS 免费套餐条件的新客户可以免费使用亚马逊 DocumentDB CloudShell。如果您的 AWS CloudShell 环境或 Amazon DocumentDB 弹性集群使用了超出免费套餐范围的资源，则您需要为这些资源支付正常 AWS 费率。本指南将在不到 5 分钟的时间内让你开始使用亚马逊 DocumentDB。

**Topics**
+ [先决条件](#elastic-clusters-prerequisites)
+ [第 1 步：创建弹性集群](#elastic-get-started-clusters)
+ [步骤 2：连接到您的弹性集群](#ec-gs-connect)
+ [步骤 3：对您的集合分片，插入和查询数据](#elastic-get-started-shard)
+ [第 4 步：探索](#ec-gs-congrats)

## 先决条件
<a name="elastic-clusters-prerequisites"></a>

在创建第一个 Amazon DocumentDB 集群之前，您必须执行以下操作：

**已创建 Amazon Web Services（AWS）账户**  
在开始使用 Amazon DocumentDB 之前，您必须拥有 Amazon Web Services（AWS）账户。该 AWS 账户是免费的。您只需为使用的服务和资源付费。  
如果您没有 AWS 账户，请完成以下步骤来创建一个。  

**要注册 AWS 账户**

1. 打开[https://portal.aws.amazon.com/billing/注册。](https://portal.aws.amazon.com/billing/signup)

1. 按照屏幕上的说明操作。

   在注册时，将接到电话或收到短信，要求使用电话键盘输入一个验证码。

   当您注册时 AWS 账户，就会创建*AWS 账户根用户*一个。根用户有权访问该账户中的所有 AWS 服务 和资源。作为最佳安全实践，请为用户分配管理访问权限，并且只使用根用户来执行[需要根用户访问权限的任务](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)。

**设置所需的 AWS Identity and Access Management (IAM) 权限。**  
要管理集群、实例和集群参数组等 Amazon DocumentDB 资源，需要 AWS 能够对您的请求进行身份验证的证书。有关更多信息，请参阅 [适用于 Amazon DocumentDB 的 Identity and Access Management](security-iam.md)。  

1. 在的搜索栏中 AWS 管理控制台，键入 IAM，然后在下拉菜单中选择 **IAM**。

1. 一旦您进入 IAM 控制台，就从导航窗格中选择**用户**。

1. 选择您的用户名。

1. 单击**添加更多权限**。

1. 选择**直接附加策略**。

1. 在搜索栏中键入 `AmazonDocDBElasticFullAccess`，并且一旦它出现在搜索结果中就选择之。

1. 单击**下一步**。

1. 单击**添加更多权限**。

****  
您的 AWS 账户在每个区域都包含一个默认 VPC。如果您选择使用 Amazon VPC，请按照《Amazon VPC 用户指南》**的[创建 Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html) 主题中的步骤进行操作。

## 第 1 步：创建弹性集群
<a name="elastic-get-started-clusters"></a>

在本节中，我们将说明如何使用 AWS 管理控制台 或 AWS CLI 并按照以下说明创建全新的弹性集群。

------
#### [ Using the AWS 管理控制台 ]

使用 AWS 管理控制台创建弹性集群配置：

1. [登录 AWS 管理控制台，然后在 /docdb 上打开亚马逊文档数据库控制台。https://console.aws.amazon.com](https://console.aws.amazon.com/docdb)

1. 在** Amazon DocumentDB 管理控制台**上，**集群**下，选择**创建**。  
![\[弹性集群表，显示没有集群作为起点。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/ec-gs-start.png)

1. 在**创建 Amazon DocumentDB 集群**页面上，在**集群类型**部分中选择**弹性集群**。  
![\[弹性集群的“集群类型”对话框，显示了基于实例的集群和弹性集群的选项。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/ec-gs-type.png)

1. 在**配置**部分中，配置以下内容：

   1. 在**集群名称**字段中，输入唯一集群标识符（遵循字段下方的命名要求）。

   1. 在**分片计数**字段中，输入您在自身集群中想要的分片的数目。每个集群的最大分片数目为 32。
**注意**  
将对每个分片部署两个节点。两个节点将具有相同的分片容量。

   1. 在**分片实例数**字段中，选择想要与每个分片关联的副本实例的数量。分片实例的最大数量为 16 个，以 1 个为增量。所有副本实例都有相同的分片容量，具体定义见以下字段。出于测试目的，默认值 2 应已足够。
**注意**  
副本实例的数量适用于弹性集群中的所有分片。分片实例计数值为 1 表示有一个写入器实例，其他任何实例都是可用于读取和提高可用性的副本。出于测试目的，默认值 2 应已足够。

   1. 在**分片容量**字段中，选择要与每个分片实例关联的虚拟 CPUs (vCPUs) 数量。CPUs 每个分片实例的最大 v 数为 64。允许值为 2、4、8、16、32、64。出于测试目的，默认值 2 应已足够。

   1. 在**虚拟私有云（VPC）**字段中，从下拉列表中选择一个 VPC。

   1. 对于**子网**和** VPC 安全组**，您可以使用默认值或选择您选定的三个子网和多达三个** VPC 安全组**（最少一个）。  
![\[弹性集群配置对话框，显示了可配置字段。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/ec-gs-configuration.png)

1. 在**身份验证**部分，在**用户名**字段中输入确定主用户登录名称的字符串。

   在**密码**字段中，输入符合说明的唯一密码，然后确认该密码。  
![\[“身份验证”部分，其中包含用户名和密码的输入字段。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/ec-gs-authentication.png)

1. 在**加密**部分中，保留默认设置（**默认密钥**）。

   或者，您可以输入自己创建的 AWS KMS key ARN。有关更多信息，请参阅 [用于 Amazon DocumentDB 弹性集群的静态数据加密](elastic-encryption.md)。
**重要**  
必须对弹性集群启用加密。

1. 在**备份**部分，根据您的备份要求编辑字段。出于测试目的，您可以保留默认设置。  
![\[“备份”对话框的屏幕截图，其中显示了用于配置集群备份时段的步骤。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/ec-gs-backup.png)

   1. **备份留存期**：在列表中，选择在删除此集群的自动备份前保留它们的天数。

   1. **备份时段**：设置 Amazon DocumentDB 要备份此集群的每日时间和持续时间。

      1. 如果要配置创建备份的时间和时长，请选择**选择时段**。

         **开始时间**：在第一个列表中，选择开始自动备份的开始时间小时 (UTC)。在第二个列表中，选择您希望自动备份开始的时间（分钟）。

         **持续时间**：在该列表中，选择要向创建自动备份分配的小时数。

      1. 如果想要 Amazon DocumentDB 选择创建备份的时间和时长，请选择**无首选项**。

1. 在**维护**部分中，选择对集群进行修改或修补的日期、时间和持续时间。出于测试目的，您可以保留默认设置。  
![\[“维护”部分，其中显示了维护时段选项。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/ec-gs-maintenance.png)

1. 选择**创建集群**。

弹性集群现正在预配置。此过程可能需要数分钟完成。当弹性集群状态在**集群**列表中显示为**可用**时，可以连接到您的集群。

------
#### [ Using the AWS CLI ]

要使用创建弹性集群 AWS CLI，请使用带有以下参数的`create-cluster`操作：
+ **--cluster-name**：必填项。创建期间输入或上次修改的弹性扩展集群的当前名称。
+ **--shard-capacity**：必填项。CPUs 分配给每个分片的 v 数。最大值为 64。允许值为 2、4、8、16、32、64。
+ **--shard-count**：必填项。分配给集群的分片的数目。最大值为 32。
+ **--shard-instance-count**：可选。适用于此集群中所有分片的副本实例数量。最大值为 16。
+ **--admin-user-name**：必填项。与管理用户关联的用户名。
+ **--admin-user-password**：必填项。与管理用户关联的密码。
+ **--auth-type**：必填项。用于确定从何处获取用于访问弹性集群的密码的身份验证类型。有效类型为 `PLAIN_TEXT` 和 `SECRET_ARN`。
+ **--vpc-security-group-ids**：可选。要与此集群关联的 EC2 VPC 安全组的列表。
+ **--preferred-maintenance-window**：可选。配置可进行系统维护的每周时间范围（采用通用协调时间（UTC））。

  格式为：`ddd:hh24:mi-ddd:hh24:mi`。有效值 (ddd)：Mon、Tue、Wed、Thu、Fri、Sat、Sun

  默认值为每个 Amazon Web Services 区域 8 小时的时间段中随机选择的 30 分钟时段（随机选取周中的某天进行）。

  至少 30 分钟的窗口。
+ **--kms-key-id**：可选。配置已加密集群的 KMS 密钥标识符。

  KMS 密钥标识符是 AWS KMS 加密密钥的亚马逊资源名称 (ARN)。如果使用拥有用于加密新集群的 KMS 加密密钥的同一 Amazon Web Services 账户创建集群，则可以使用 KMS 密钥别名而不是 KMS 加密密钥的 ARN。

  如果中未指定加密密钥， KmsKeyId 且`StorageEncrypted`参数为真，则 Amazon DocumentDB 将使用您的默认加密密钥。
+ **--preferred-backup-window**：可选。创建自动备份的每日首选时间范围。默认值是从 8 小时的时间段中随机选择一个 30 分钟的窗口。 AWS 区域
+ **--backup-retention-period**：可选。自动备份的保留天数。默认值是 1。
+ **--storage-encrypted**：可选。配置集群是已加密还是未加密。

  `--no-storage-encrypted` 指定集群未加密。
+ **--subnet-ids**：可选。配置网络子网 ID。

在以下示例中，将每个 *user input placeholder* 替换为您自己的信息。

**注意**  
以下示例包括创建特定 KMS 密钥。要使用默认 KMS 密钥，请不要包含 `--kms-key-id` 参数。

对于 Linux、macOS 或 Unix：

```
aws docdb-elastic create-cluster \
     --cluster-name sample-cluster-123 \
     --shard-capacity 8 \
     --shard-count 4 \
     --shard-instance-count 3 \
     --auth-type PLAIN_TEXT \
     --admin-user-name testadmin \
     --admin-user-password testPassword \
     --vpc-security-group-ids ec-65f40350 \
     --kms-key-id arn:aws:docdb-elastic:us-east-1:477568257630:cluster/b9f1d489-6c3e-4764-bb42-da62ceb7bda2 \
     --subnet-ids subnet-9253c6a3, subnet-9f1b5af9 \
     --preferred-backup-window 18:00-18:30 \ 
     --backup-retention-period 7
```

对于 Windows：

```
aws docdb-elastic create-cluster ^
     --cluster-name sample-cluster-123 ^
     --shard-capacity 8 ^
     --shard-count 4 ^
     --shard-instance-count 3 ^
     --auth-type PLAIN_TEXT ^
     --admin-user-name testadmin ^
     --admin-user-password testPassword ^
     --vpc-security-group-ids ec-65f40350 ^
     --kms-key-id arn:aws:docdb-elastic:us-east-1:477568257630:cluster/b9f1d489-6c3e-4764-bb42-da62ceb7bda2 ^
     --subnet-ids subnet-9253c6a3, subnet-9f1b5af9 \
     --preferred-backup-window 18:00-18:30 \ 
     --backup-retention-period 7
```

------

## 步骤 2：连接到您的弹性集群
<a name="ec-gs-connect"></a>

使用连接到您的亚马逊 DocumentDB 弹性集群。 AWS CloudShell

1. 在 Amazon DocumentDB 管理控制台上的**集群**下，找到您创建的弹性集群。单击集群旁边的复选框，选择您的集群。  
![\[Amazon DocumentDB 集群管理界面，其中显示了弹性集群\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/ec-gs-cluster-new.png)

1. 单击**连接到集群**（位于**操作**下拉菜单旁边）。只有在您单击集群旁边的复选框并且集群的状态显示为**可用**后，才会启用此按钮。将出现 “ CloudShell **运行命令**” 屏幕。

1. 在**新环境名称**字段中，输入唯一名称，例如“test”，然后单击**创建并运行**。将自动为您的 Amazon DocumentDB 数据库配置 VPC 环境详细信息。  
![\[弹性集群 CloudShell 运行命令屏幕请求新的环境名称\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/ec-gs-run-command.png)

1. 出现提示时，输入您在“步骤 1：创建 Amazon DocumentDB 弹性集群”（子步骤 5）中创建的密码。  
![\[弹性集群 CloudShell 屏幕请求用户密码\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/ec-gs-cs-password.png)

   在您输入密码并且提示符变成 `direct: mongos] <env-name>>` 后，表示您已成功连接到您的 Amazon DocumentDB 集群

**注意**  
有关对 流进行问题排查的更多信息，请参阅 [Amazon DocumentDB 问题排查](https://docs.aws.amazon.com/documentdb/latest/developerguide/troubleshooting.html)。

## 步骤 3：对您的集合分片，插入和查询数据
<a name="elastic-get-started-shard"></a>

弹性集群增加对 Amazon DocumentDB 中分片过程的支持。既然您已连接到集群，您可以对集群分片、插入数据并运行数个查询。

1. 要对集合分片，请输入以下：

   ```
   sh.shardCollection("db.Employee1" , { "Employeeid" : "hashed" })
   ```

1. 要插入单个文档，请输入以下内容：

   ```
   db.Employee1.insertOne({"Employeeid":1, "Name":"Joe", "LastName": "Bruin", "level": 1 })
   ```

   以下输出显示：

   ```
   WriteResult({ "nInserted" : 1 })
   ```

1. 要阅读您编写的文档，请输入以下`findOne()`命令（它返回单一文档）：

   ```
   db.Employee1.findOne()
   ```

   以下输出显示：

   ```
   {
   "_id" : ObjectId("61f344e0594fe1a1685a8151"),
   "EmployeeID" : 1,
   "Name" : "Joe",
   "LastName" : "Bruin",
   "level" : 1
   }
   ```

1. 要执行若干更多查询，请考虑游戏配制文件用例。首先，将几个条目插入标题为“员工”的集合。输入以下信息：

   ```
   db.profiles.insertMany([ { "_id": 1, "name": "Matt", "status": "active", "level": 12, "score": 202 }, 
        { "_id": 2, "name": "Frank", "status": "inactive", "level": 2, "score": 9 }, 
        { "_id": 3, "name": "Karen", "status": "active", "level": 7, "score": 87 }, 
        { "_id": 4, "name": "Katie", "status": "active", "level": 3, "score": 27 }
   ])
   ```

   以下输出显示：

   ```
   { acknowledged: true, 
        insertedIds: { 
           '0': ObjectId('679d02cd6b5a0581be78bcbd'),
           '1': ObjectId('679d02cd6b5a0581be78bcbe'),
           '2': ObjectId('679d02cd6b5a0581be78bcbf'),
           '3': ObjectId('679d02cd6b5a0581be78bcc0')
       }
   }
   ```

1. 要返回配制文件集合中的所有文档，请输入`find` () 命令：

   ```
   db.Employee.find()
   ```

   您在步骤 4 中输入的数据显示。

1. 要查询单一文档，请纳入过滤器（例如：“Katie”）。输入以下信息：

   ```
   db.Employee.find({name: "Katie"})
   ```

    以下输出显示：

   ```
   [ 
      { 
        _id: ObjectId('679d02cd6b5a0581be78bcc0'), 
        Employeeid: 4, 
        name: 'Katie', 
        lastname: 'Schaper', 
        level: 3 
      } 
   ]
   ```

1. 要查找配置文件并对其进行修改，请输入`findAndModify`命令。在此示例中，给予员工“Matt”更高等级，即 “14”：

   ```
   db.Employee.findAndModify({     
       query: { "Employeeid" : 1, "name" : "Matt"},     
       update: { "Employeeid" : 1, "name" : "Matt", "lastname" : "Winkle", "level" : 14 } 
   })
   ```

   以下输出显示（请注意，级别尚未更改）：

   ```
   { 
      _id: ObjectId('679d02cd6b5a0581be78bcbd'), 
      Employeeid: 1, 
      name: 'Matt', 
      lastname: 'Winkle', 
      level: 12 
   }
   ```

1. 要验证级别提高，请输入以下查询：

   ```
   db.Employee.find({name: "Matt"})
   ```

   以下输出显示：

   ```
   [
      { 
      _id: ObjectId('679d02cd6b5a0581be78bcbd'), 
      Employeeid: 1, 
      name: 'Matt', 
      lastname: 'Winkle', 
      level: 14 
      }
   ]
   ```

## 第 4 步：探索
<a name="ec-gs-congrats"></a>

恭喜您！您已成功完成 Amazon DocumentDB 弹性集群的入门过程。

接下来做什么？ 了解如何充分利用这个数据库及其热门功能：
+  [Amazon DocumentDB 弹性集群最佳实践](elastic-best-practices.md) 
+  [管理 Amazon DocumentDB 弹性集群](elastic-managing.md) 

**注意**  
您在此入门过程中创建的弹性集群将继续产生费用，除非您将其删除。有关指导，请参阅[删除弹性集群](elastic-managing.md#elastic-delete)。

# Amazon DocumentDB 弹性集群最佳实践
<a name="elastic-best-practices"></a>

了解使用 Amazon DocumentDB 弹性集群的最佳实践。所有[基于实例的 Amazon DocumentDB 集群的最佳实践](https://docs.aws.amazon.com/documentdb/latest/developerguide/best_practices.html)也适用于弹性集群。随着新的最佳实践的确定，此节将不断更新。

**Topics**
+ [选择分片键](#choosing-shard-keys)
+ [连接管理](#connection-management)
+ [未分片的集合](#unsharded-collections)
+ [扩展弹性集群](#scaling)
+ [监控弹性集群](#monitoring-elastic-clusters)

## 选择分片键
<a name="choosing-shard-keys"></a>

以下列表描述了创建分片键的指导原则。
+ 使用均匀分发的哈希键分发数据遍及您集群中的所有分片（避免热键）。
+ 在所有读取/更新/删除请求中使用分片键，以避免分散聚集查询。
+ 在执行读取/更新/删除操作时，请避免嵌套的分片键。
+ 进行批量操作时，请将 `ordered` 设置成虚假，从而使所有分片可以并行运行并改善延迟。

## 连接管理
<a name="connection-management"></a>

以下列表描述了管理与您数据库连接的指导原则。
+ 监控您的连接计数以及新连接开闭的频率。
+ 将您的连接分布到按您的应用程序配置的所有子网。如果您的集群配置在多个子网中，但您只使用这些子网的子集，则您可能在最大连接数上遇到瓶颈。

## 未分片的集合
<a name="unsharded-collections"></a>

以下内容描述了用于未分片集合的指导原则。
+ 在处理未分片的集合时，为了分配负载，请尝试将高度利用的未分片集合保留在不同的数据库上。Amazon DocumentDB 弹性集群跨不同分片安置数据库，并将同一数据库的未分片集合共同定位在同一个分片上。

## 扩展弹性集群
<a name="scaling"></a>

以下列表描述了扩展弹性集群的指导原则。
+ 扩展操作可能会导致短时间的间断性数据库和网络错误。如果可能，请避免在高峰时段扩展。尝试在维护窗口期间扩展。
+ 相比增加或减少分片计数，首选向上和向下扩展分片容量（更改每个分片的 vCPU 计数）以增加计算能力，因为它更快且具有更短的间断性数据库和网络错误持续时间。
+ 在预测增长时，最好增加分片计数，而非扩展分片容量。这使您能够通过增加需要快速扩展的场景的分片容量，来扩展您的集群。
+ 监控您的客户端重试策略并使用指数回退和抖动进行重试，以避免在扩展情况下出现错误时数据库过载。

## 监控弹性集群
<a name="monitoring-elastic-clusters"></a>

以下列表描述了监控弹性集群的指导原则。
+ 跟踪每个分片指标的峰值/平均值比率，以确定您是否驱动不均衡的流量（有热键/热点）。跟踪峰值/平均值比率的关键指标是：
  + `PrimaryInstanceCPUUtilization`
    + 这可以在每个分片层面监控。
    + 在集群层面，您可以监视平均到 p99 的偏差。
  + `PrimaryInstanceFreeableMemory`
    + 这可以在每个分片层面监控。
    + 在集群层面，您可以监视平均到 p99 的偏差。
  + `DatabaseCursorsMax`
    + 这应在每个分片层面监控以确定偏差。
  + `Documents-Inserted/Updated/Returned/Deleted`
    + 这应在每个分片层面监控以确定偏差。

# 管理 Amazon DocumentDB 弹性集群
<a name="elastic-managing"></a>

要管理 Amazon DocumentDB 弹性集群，您必须拥有带适当 Amazon DocumentDB 控制层面的 IAM policy略。这些权限使您能够创建、修改和删除集群。亚马逊文档DBFull访问策略提供了管理亚马逊 DocumentDB 弹性集群所需的所有权限。

以下主题显示使用 Amazon DocumentDB 弹性集群时如何执行各种任务。

**Topics**
+ [修改弹性集群配置](#elastic-modify)
+ [监控弹性集群](#elastic-monitor)
+ [删除弹性集群](#elastic-delete)
+ [管理弹性集群快照](elastic-manage-snapshots.md)
+ [停止和启动 Amazon DocumentDB 弹性集群](elastic-cluster-stop-start.md)
+ [维护 Amazon DocumentDB 弹性集群](elastic-cluster-maintenance.md)

## 修改弹性集群配置
<a name="elastic-modify"></a>

在本节中，我们将说明如何使用 AWS 管理控制台 或 AWS CLI 并按照以下说明修改弹性集群。

修改集群的主要用途是通过增加或减少分片计数 and/or 分片计算容量来扩展分片。

------
#### [ Using the AWS 管理控制台 ]

要使用以下命令修改弹性集群配置 AWS 管理控制台：

1. 登录 [AWS 管理控制台](https://console.aws.amazon.com/docdb/home?region=us-east-1) 并打开 Amazon DocumentDB 控制台。

1. 在导航窗格中，选择**集群**。
**提示**  
如果您在屏幕左侧没有看到导航窗格，请在导航窗格左上角选择菜单图标。

1. 在**集群标识符列**中选择您想要修改的集群的名称。

1. 选择 **Modify**(修改)。

1. 编辑您想要更改的字段，然后选择**修改群集**。  
![\[表单，其中显示了可以修改的配置、维护、身份验证和网络设置等选项，“修改集群”按钮位于右下角。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/cluster-shard-modify-3.png)

**注意**  
或者，您可以通过以下方式访问**修改集群**对话框：转到**集群**页面，勾选紧邻您集群的复选框，选择**操作**，然后选择**修改**。

------
#### [ Using the AWS CLI ]

要使用修改弹性集群配置 AWS CLI，请使用带有以下参数的`update-cluster`操作：
+ **--cluster-arn**：必填项。要删除的集群的 ARN 标识符。
+ **--shard-capacity**：可选。CPUs 分配给每个分片的 v 数。最大值为 64。允许值为 2、4、8、16、32、64。
+ **--shard-count**：可选。分配给集群的分片的数目。最大值为 32。
+ **--shard-instance**-count：可选。适用于此集群中所有分片的副本实例数量。最大值为 16。
+ **--auth-type**：可选。用于确定从何处获取用于访问弹性集群的密码的身份验证类型。有效类型为 `PLAIN_TEXT` 和 `SECRET_ARN`。
+ **--admin-user-password**：可选。与管理用户关联的密码。
+ **--vpc-security-group-ids**：可选。配置与这个集群待关联的一系列 Amazon EC2 安全组和 Amazon VPC (VPC) 安全组。
+ **--preferred-maintenance-window**：可选。配置可进行系统维护的每周时间范围（采用通用协调时间（UTC））

  格式为：`ddd:hh24:mi-ddd:hh24:mi`。有效值 (ddd)：Mon、Tue、Wed、Thu、Fri、Sat、Sun

  默认值为每个 Amazon Web Services 区域 8 小时的时间段中随机选择的 30 分钟时段（随机选取周中的某天进行）。

  至少 30 分钟的窗口。
+ **--subnet-ids**：可选。配置网络子网 ID。

在以下示例中，将每个 *user input placeholder* 替换为您自己的信息。

对于 Linux、macOS 或 Unix：

```
aws docdb-elastic update-cluster \
    --cluster-arn arn:aws:docdb-elastic:us-east-1:477568257630:cluster/b9f1d489-6c3e-4764-bb42-da62ceb7bda2 \
    --shard-capacity 8 \
    --shard-count 4 \
    --shard-instance-count 3 \
    --admin-user-password testPassword \
    --vpc-security-group-ids ec-65f40350 \
    --subnet-ids subnet-9253c6a3, subnet-9f1b5af9
```

对于 Windows：

```
aws docdb-elastic update-cluster ^
    --cluster-arn arn:aws:docdb-elastic:us-east-1:477568257630:cluster/b9f1d489-6c3e-4764-bb42-da62ceb7bda2 ^
    --shard-capacity 8 ^
    --shard-count 4 ^
    --shard-instance-count 3 ^
    --admin-user-password testPassword ^
    --vpc-security-group-ids ec-65f40350 ^
    --subnet-ids subnet-9253c6a3, subnet-9f1b5af9
```

------

要在修改后监控弹性集群的状态，请参阅监控弹性集群。

## 监控弹性集群
<a name="elastic-monitor"></a>

在本节中，我们将说明如何使用 AWS 管理控制台 或 AWS CLI 以及以下说明监控您的弹性集群。

------
#### [ Using the AWS 管理控制台 ]

要使用以下方法监控弹性集群配置 AWS 管理控制台：

1. 登录 [AWS 管理控制台](https://console.aws.amazon.com/docdb/home?region=us-east-1) 并打开 Amazon DocumentDB 控制台。

1. 在导航窗格中，选择**集群**。
**提示**  
如果您在屏幕左侧没有看到导航窗格，请在导航窗格左上角选择菜单图标。

1. 在**集群标识符**列中选择您想要监控的集群的名称。

1. 选择**监控**选项卡。  
![\[弹性集群摘要信息显示在“监控”选项卡中。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/cluster-shard-monitor-2.png)

Amazon CloudWatch 为以下监控类别显示了许多图表：
+ 资源利用率
+ 吞吐量
+ 操作
+ 系统

您也可以 CloudWatch 通过访问 Amazon AWS 管理控制台 ，为您的弹性集群设置自己的监控环境。

------
#### [ Using the AWS CLI ]

要使用监控特定的弹性集群配置 AWS CLI，请使用带有以下参数的`get-cluster`操作：
+ **--cluster-arn**：必填项。要获取其信息的集群的 ARN 标识符。

在以下示例中，将每个 *user input placeholder* 替换为您自己的信息。

对于 Linux、macOS 或 Unix：

```
aws docdb-elastic get-cluster \
    --cluster-arn arn:aws:docdb-elastic:us-west-2:123456789012:cluster:/68ffcdf8-e3af-40a3-91e4-24736f2dacc9
```

对于 Windows：

```
aws docdb-elastic get-cluster ^
    --cluster-arn arn:aws:docdb:-elastic:us-west-2:123456789012:cluster:/68ffcdf8-e3af-40a3-91e4-24736f2dacc9
```

此操作的输出将类似于以下内容：

```
"cluster": {
        ...
        "clusterArn": "arn:aws:docdb-elastic:us-west-2:123456789012:cluster:/68ffcdf8-e3af-40a3-91e4-24736f2dacc9",
        "clusterEndpoint": "stretch-11-477568257630.us-east-1.docdb-elastic.amazonaws.com",
        "readerEndpoint": "stretch-11-477568257630-ro.us-east-1.docdb-elastic.amazonaws.com",
        "clusterName": "stretch-11",     
        "shardCapacity": 2,
        "shardCount": 3,
        "shardInstanceCount: 5,
        "status": "ACTIVE",
        ...
 }
```

有关更多信息，请参阅 Amazon DocumentDB 资源管理 API 参考中的 `DescribeClusterSnapshot`。

要使用查看所有弹性集群的详细信息 AWS CLI，请使用带有以下参数的`list-clusters`操作：
+ **--next-token**：可选。如果项目输出的数量（`--max-results`）少于基础 API 调用所返回的项目总数，则输出将包含您可传递到后续命令的 `NextToken` 以检索下一组项目。
+ **--max-results**：可选。命令的输出中要返回的项目总数。如果存在的记录数超过了指定的`max-results` 值，则在响应中包含分页记号（`next-token`），以便检索剩余的结果。
  + 默认值：100
  + 最小值 20，最大值 100

在以下示例中，将每个 *user input placeholder* 替换为您自己的信息。

对于 Linux、macOS 或 Unix：

```
aws docdb-elastic list-clusters \
    --next-token eyJNYXJrZXIiOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiAxfQ== \
    --max-results 2
```

对于 Windows：

```
aws docdb-elastic list-clusters ^
    --next-token eyJNYXJrZXIiOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiAxfQ== ^
    --max-results 2
```

此操作的输出将类似于以下内容：

```
{
   "Clusters": [
      {
         "ClusterIdentifier":"mycluster-1",
         "ClusterArn":"arn:aws:docdb:us-west-2:123456789012:sharded-cluster:sample-cluster"
         "Status":"available",
         "ClusterEndpoint":"sample-cluster.sharded-cluster-corcjozrlsfc.us-west-2.docdb.amazonaws.com"
       }
       {
         "ClusterIdentifier":"mycluster-2",
         "ClusterArn":"arn:aws:docdb:us-west-2:987654321098:sharded-cluster:sample-cluster"
         "Status":"available",
         "ClusterEndpoint":"sample-cluster2.sharded-cluster-corcjozrlsfc.us-west-2.docdb.amazonaws.com"
       }
   ] 
}
```

------

## 删除弹性集群
<a name="elastic-delete"></a>

在本节中，我们将说明如何使用 AWS 管理控制台 或 AWS CLI 以及以下说明删除弹性集群。

------
#### [ Using the AWS 管理控制台 ]

要使用 AWS 管理控制台删除弹性集群配置：

1. 登录 [AWS 管理控制台](https://console.aws.amazon.com/docdb/home?region=us-east-1) 并打开 Amazon DocumentDB 控制台。

1. 在导航窗格中，选择**集群**。
**提示**  
如果您在屏幕左侧没有看到导航窗格，请在导航窗格左上角选择菜单图标。

1. 在集群列表表中，选择在您想要删除的集群名称左侧的复选框，然后选择**操作**。从下拉菜单中，选择**删除**。

1. 在**是否删除“集群名称” 弹性集群？**对话框中，选择**删除**。  
![\[“删除”对话框，“删除”按钮位于右下角。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/cluster-delete-dialog.png)

删除集群需要几分钟时间。要监控集群的状态，请参阅 [ 监控 Amazon DocumentDB 集群的状态](https://docs.aws.amazon.com//documentdb/latest/developerguide/monitoring_docdb-cluster_status.html)。

------
#### [ Using the AWS CLI ]

要使用删除弹性集群 AWS CLI，请使用带有以下参数的`delete-cluster`操作：:
+ **--cluster-arn**：必填项。要删除的集群的 ARN 标识符。
+ **--no-skip-final-backup**：可选。如果您需要最终备份，则必须包含该参数和最终备份的名称。必须包含 `--final-backup-identifier` 或 `--skip-final-backup`。
+ **--skip-final-backup**：可选。仅当您不想在删除集群之前拍摄最终备份时，才使用此参数。默认设置是拍摄最终快照。

以下 AWS CLI 代码示例删除 ARN 为 arn: aws: docdb: us-west-2:123456789012: sharded-cluster: sample-cluster 的集群，并进行最终备份。

在以下示例中，用您自己的信息替换每个*user input placeholder*示例。

对于 Linux、macOS 或 Unix：

```
aws docdb-elastic delete-cluster \
    --cluster-arn arn:aws:docdb:us-west-2:123456789012:sharded-cluster:sample-cluster \
    --no-skip-final-backup \
    --final-backup-identifier finalArnBU-arn:aws:docdb:us-west-2:123456789012:sharded-cluster:sample-cluster
```

对于 Windows：

```
aws docdb-elastic delete-cluster ^
    --cluster-arn arn:aws:docdb:us-west-2:123456789012:sharded-cluster:sample-cluster ^
    --no-skip-final-backup ^
    --final-backup-identifier finalArnBU-arn:aws:docdb:us-west-2:123456789012:sharded-cluster:sample-cluster
```

以下 AWS CLI 代码示例在不进行最终备份的情况下删除 ARN 为 arn: aws: docdb: us-west-2:123456789012: sharded-cluster: sample-cluster 的集群。

在以下示例中，将每个 *user input placeholder* 替换为您自己的信息。

对于 Linux、macOS 或 Unix：

```
aws docdb-elastic delete-cluster \
    --cluster-arn arn:aws:docdb:us-west-2:123456789012:sharded-cluster:sample-cluster \
    --skip-final-backup \
```

对于 Windows：

```
aws docdb-elastic delete-cluster ^
    --cluster-arn arn:aws:docdb:us-west-2:123456789012:sharded-cluster:sample-cluster ^
    --skip-final-backup ^
```

`delete-cluster` 操作的输出是您要删除的集群的展示。

删除集群需要几分钟时间。要监控集群的状态，请参阅 [ 监控 Amazon DocumentDB 集群的状态](https://docs.aws.amazon.com/documentdb/latest/developerguide/monitoring_docdb-cluster_status.html)。

------

# 管理弹性集群快照
<a name="elastic-manage-snapshots"></a>

已经创建弹性集群后可以手动拍摄快照。在创建弹性集群快照的那一刻就会创建自动备份。

**注意**  
您的集群必须处于 `Available` 状态，才能拍摄手动快照。

这个部分解释如何创建、查看、恢复和删除弹性集群快照。

以下主题显示使用 Amazon DocumentDB 弹性集群快照时如何执行各种任务。

**Topics**
+ [创建手动弹性集群快照](#elastic-create-snapshot)
+ [查看弹性集群快照](#elastic-view-snapshot)
+ [从快照还原弹性集群](#elastic-restore-snapshot)
+ [复制弹性集群快照](#elastic-copy-snapshot)
+ [删除弹性集群快照](#elastic-delete-snapshot)
+ [管理弹性集群快照的自动备份](#elastic-auto-snapshot)

## 创建手动弹性集群快照
<a name="elastic-create-snapshot"></a>

在本节中，我们将说明如何使用 AWS 管理控制台 或 AWS CLI 以及以下说明创建手动弹性集群快照。

------
#### [ Using the AWS 管理控制台 ]

要使用 AWS 管理控制台创建手动弹性集群快照：

1. 登录 [AWS 管理控制台](https://console.aws.amazon.com/docdb/home?region=us-east-1) 并打开 Amazon DocumentDB 控制台。

1. 在导航窗格中，选择**快照**。
**提示**  
如果您在屏幕左侧没有看到导航窗格，请在导航窗格左上角选择菜单图标。

1. 在 **Snapshots (快照)** 页面上，选择 **Create (创建)**。

1. 在**创建集群快照**页面上**集群标识符**字段中，从下拉列表选择您的弹性集群。

   在**快照标识符**字段中，输入您弹性集群的唯一标识符。

   选择**创建**。  
![\[图：弹性集群创建快照\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/elastic-create-snapshot.png)

**注意**  
或者，您可以通过以下方式访问**创建集群快照**对话框：转到**集群**页面，勾选紧邻您集群的复选框，然后选择**操作**，然后**拍摄快照**。

您的弹性集群快照现正在预配置。此过程可能需要数分钟完成。当状态作为 `Available` 在**快照**列表中显示时，您可以查看快照并从其中恢复。

------
#### [ Using the AWS CLI ]

要使用创建手动弹性集群快照 AWS CLI，请使用带有以下参数的`create-cluster-snapshot`操作：
+ **--snapshot-name**：必填项。用来创建新集群的快照的名称。
+ **--cluster-arn**：必填项。您想要创建其快照的集群的 ARN 标识符。

在以下示例中，将每个 *user input placeholder* 替换为您自己的信息。

对于 Linux、macOS 或 Unix：

```
aws docdb-elastic create-cluster-snapshot \
    --snapshot-name sample-snapshot-1 \
    --cluster-arn arn:aws:docdb:us-west-2:123456789012:sharded-cluster:sample-cluster
```

对于 Windows：

```
aws docdb-elastic create-cluster-snapshot ^
    --snapshot-name sample-snapshot-1 ^
    --cluster-arn arn:aws:docdb:us-west-2:123456789012:sharded-cluster:sample-cluster
```

------

## 查看弹性集群快照
<a name="elastic-view-snapshot"></a>

在本节中，我们将说明如何使用 AWS 管理控制台 或 AWS CLI 以及以下说明查看弹性集群快照信息。

------
#### [ Using the AWS 管理控制台 ]

要查看有关特定弹性集群快照的信息，请使用 AWS 管理控制台：

1. 登录 [AWS 管理控制台](https://console.aws.amazon.com/docdb/home?region=us-east-1) 并打开 Amazon DocumentDB 控制台。

1. 在导航窗格中，选择**快照**。
**提示**  
如果您在屏幕左侧没有看到导航窗格，请在导航窗格左上角选择菜单图标。

1. 在**快照**页面上，通过点击**快照标识符**列中的名称，从列表选择您的快照。

1. 在**详情**中查看您的快照信息。  
![\[图：弹性集群视图快照\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/elastic-snapshot-view.png)

------
#### [ Using the AWS CLI ]

要使用查看有关特定弹性集群快照的信息 AWS CLI，请使用带有以下参数的`get-cluster-snapshot`操作：
+ **--snapshot-arn**：必填项。您要获取其信息的快照的 ARN 标识符。

在以下示例中，将每个 *user input placeholder* 替换为您自己的信息。

对于 Linux、macOS 或 Unix：

```
aws docdb-elastic get-cluster-snapshot \
    --snapshot-arn sampleResourceName
```

对于 Windows：

```
aws docdb-elastic get-cluster-snapshot ^
    --snapshot-arn sampleResourceName
```

要使用查看有关特定弹性集群快照的信息 AWS CLI，请使用带有以下参数的`get-cluster-snapshot`操作：
+ **--snapshot-arn**：必填项。您要获取其信息的快照的 ARN 标识符。

在以下示例中，将每个 *user input placeholder* 替换为您自己的信息。

对于 Linux、macOS 或 Unix：

```
aws docdb-elastic get-cluster-snapshot \
    --snapshot-arn sampleResourceName
```

对于 Windows：

```
aws docdb-elastic get-cluster-snapshot ^
    --snapshot-arn sampleResourceName
```

要使用查看有关所有弹性集群快照的信息 AWS CLI，请使用带有以下参数的`list-cluster-snapshots`操作：
+ **--snapshot-type**—可选。要返回的数据库集群快照的类型。可以指定以下值之一：
  + `automated`-返回 Amazon DocumentDB 自动为您的 AWS 账户创建的所有集群快照。
  + `manual`-返回您为 AWS 账户手动创建的所有集群快照。
  + `shared`-返回已共享到您的 AWS 账户的所有手动集群快照。
  + `public`：返回已标记为公有的所有集群快照。
+ **--next-token**：可选。由之前的请求提供的可选分页标记。如果指定此参数，则响应仅包含令牌之外的记录，最大数量为 `max-results` 指定的值。
+ **--max-results**：可选。包括在响应中的最大记录数。如果存在的记录数超过了指定的`max-results` 值，则在响应中包含分页记号（`next-token`），以便检索剩余的结果。
  + 默认值：100
  + 最小值 20，最大值 100

在以下示例中，将每个 *user input placeholder* 替换为您自己的信息。

对于 Linux、macOS 或 Unix：

```
aws docdb-elastic list-cluster-snapshots \
    --snapshot-type  value \
    --next-token  value \
    --max-results 50
```

对于 Windows：

```
aws docdb-elastic list-cluster-snapshots ^
    --snapshot-type  value ^
    --next-token  value ^
    --max-results 50
```

------

## 从快照还原弹性集群
<a name="elastic-restore-snapshot"></a>

在本节中，我们将按照以下说明说明如何使用 AWS 管理控制台 或 AWS CLI 从快照恢复弹性集群。

------
#### [ Using the AWS 管理控制台 ]

使用 AWS 管理控制台从快照还原弹性集群：

1. 登录 [AWS 管理控制台](https://console.aws.amazon.com/docdb/home?region=us-east-1) 并打开 Amazon DocumentDB 控制台。

1. 在导航窗格中，选择**快照**。
**提示**  
如果您在屏幕左侧没有看到导航窗格，请在导航窗格左上角选择菜单图标。

1. 在**快照标识符** 中，选择要用于还原集群的快照左侧的按钮。

1. 选择**操作**，然后**还原**。  
![\[图：从快照恢复弹性集群\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/elastic-restore-snapshot.png)

1. 在**还原快照**页面上，在**集群标识符**字段中输入新集群的名称。
**注意**  
对于任何手动快照恢复，您必须创建一个新集群。

1. 在**虚拟私有云 (VPC)**字段中，从下拉列表中选择一个 VPC。

1. 对于**子网**和 **VPC 安全组**，您可以使用默认值或选择您选定的三个子网和多达三个 VPC 安全组（最少一个）。

1. 如果您对集群配置满意，请选择 **Restore cluster (还原集群)** 并等待集群还原。

------
#### [ Using the AWS CLI ]

要使用从快照恢复弹性集群 AWS CLI，请使用带有以下参数的`restore-cluster-from-snapshot`操作：
+ **--cluster-name**：必填项。创建期间输入或上次修改的弹性集群的当前名称。
+ **--snapshot-arn**：必填项。正用于恢复集群的快照的 ARN 标识符。
+ **--vpc-security-group-ids**：可选。与该集群待关联的一个或多个 Amazon EC2 安全组和 Amazon VPC (VPC) 安全组。
+ **--kms-key-id**：可选。配置已加密集群的 KMS 密钥标识符。

  KMS 密钥标识符是 AWS KMS 加密密钥的亚马逊资源名称 (ARN)。如果使用拥有用于加密新集群的 KMS 加密密钥的同一 Amazon Web Services 账户创建集群，则可以使用 KMS 密钥别名而不是 KMS 加密密钥的 ARN。

  如果中未指定加密密钥， KmsKeyId 且`StorageEncrypted`参数为真，则 Amazon DocumentDB 将使用您的默认加密密钥。
+ **--subnet-ids**—可选。网络子网 ID。

在以下示例中，用您自己的信息替换每个*user input placeholder*示例。

对于 Linux、macOS 或 Unix：

```
aws docdb-elastic restore-cluster-from-snapshot \
     --cluster-name elastic-sample-cluster \
     --snapshot-arn sampleResourceName \
     --vpc-security-group-ids value ec-65f40350 \
     --kms-key-id arn:aws:docdb-elastic:us-east-1:477568257630:cluster/b9f1d489-6c3e-4764-bb42-da62ceb7bda2 \
     --subnet-ids subnet-9253c6a3, subnet-9f1b5af9
```

对于 Windows：

```
aws docdb-elastic restore-cluster-from-snapshot ^
     --cluster-name elastic-sample-cluster ^
     --snapshot-arn sampleResourceName ^
     --vpc-security-group-ids value ec-65f40350 ^
     --kms-key-id arn:aws:docdb-elastic:us-east-1:477568257630:cluster/b9f1d489-6c3e-4764-bb42-da62ceb7bda2 ^
     --subnet-ids subnet-9253c6a3, subnet-9f1b5af9
```

------

## 复制弹性集群快照
<a name="elastic-copy-snapshot"></a>

在 Amazon DocumentDB 中，您可以在同一区域和同一账户中复制手动和自动弹性集群快照。在本节中，我们将说明如何使用 AWS 管理控制台 或复制弹性集群快照 AWS CLI。

------
#### [ Using the AWS 管理控制台 ]

要使用以下方法复制弹性集群快照 AWS 管理控制台：

1. 登录 [AWS 管理控制台](https://console.aws.amazon.com/docdb/home?region=us-east-1) 并打开 Amazon DocumentDB 控制台。

1. 在导航窗格中，选择**快照**。
**提示**  
如果您在屏幕左侧没有看到导航窗格，请在导航窗格左上角选择菜单图标。

1. 在**快照标识符**中，选择要复制的快照左侧的按钮。

1. 选择**操作**和**复制**。  
![\[图：弹性集群复制快照\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/ec-copy-snapshot.png)

1. 对于**新快照标识符**，输入新快照的名称。

1. 对于**复制标签**，如果要将源弹性集群快照的所有标签复制到目标弹性集群快照，请勾选此方框。

1. 对于**加密**，请选择默认 AWS KMS 密钥或 KMS 密钥。在第二个选项中，您可以选择已创建的现有 KMS 密钥，也可以创建新的密钥。

1. 完成后选择**复制快照**。

------
#### [ Using the AWS CLI ]

要使用复制弹性集群快照 AWS CLI，请使用带有以下参数的`copy-cluster-snapshot`操作：
+ **‐‐source-db-cluster-snapshot-identifier**：必填项。当前复制的现有弹性集群快照的标识符。弹性集群快照必须存在并且处于可用状态。此参数不区分大小写。
+ **‐‐target-db-cluster-snapshot-identifier**：必填项。要从现有集群快照创建的新弹性集群快照标识符​。此参数不区分大小写。

  目标快照名称约束：
  + 不能是现有快照的名称。
  + 长度为 [1-63] 个字母、数字或连字符。
  + 第一个字符必须是字母。
  + 不能以连字符结尾或包含两个连续的连字符。

在以下示例中，将每个 *user input placeholder* 替换为您自己的信息。

对于 Linux、macOS 或 Unix：

```
aws docdb-elastic copy-cluster-snapshot \
     ‐‐source-cluster-snapshot-arn <sample ARN> \
     ‐‐target-cluster-snapshot-name my-target-copied-snapshot
```

对于 Windows：

```
aws docdb-elastic copy-cluster-snapshot ^
     ‐‐source-cluster-snapshot-arn <sample ARN> ^
     ‐‐target-cluster-snapshot-name my-target-copied-snapshot
```

------

## 删除弹性集群快照
<a name="elastic-delete-snapshot"></a>

在本节中，我们将说明如何使用 AWS 管理控制台 或删除弹性集群快照 AWS CLI。

------
#### [ Using the AWS 管理控制台 ]

使用 AWS 管理控制台从快照还原弹性集群：

1. 登录 [AWS 管理控制台](https://console.aws.amazon.com/docdb/home?region=us-east-1) 并打开 Amazon DocumentDB 控制台。

1. 在导航窗格中，选择**快照**。
**提示**  
如果您在屏幕左侧没有看到导航窗格，请在导航窗格左上角选择菜单图标。

1. 在**快照标识符** 中，选择要用于还原集群的快照左侧的按钮。

1. 选择**操作**，然后选择**删除**。  
![\[图：弹性集群删除快照\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/elastic-delete-snapshot.png)

1. 在**删除“快照名称”快照**对话框中，选择**删除**。

------
#### [ Using the AWS CLI ]

要使用删除弹性集群快照 AWS CLI，请使用带有以下参数的`delete-cluster-snapshot`操作：
+ **--snapshot-arn**：必填项。正用于恢复集群的快照的 ARN 标识符。

在以下示例中，用您自己的信息替换每个*user input placeholder*示例。

对于 Linux、macOS 或 Unix：

```
aws docdb-elastic delete-cluster-snapshot \
     --snapshot-arn sampleResourceName
```

对于 Windows：

```
aws docdb-elastic delete-cluster-snapshot ^
     --snapshot-arn sampleResourceName
```

------

## 管理弹性集群快照的自动备份
<a name="elastic-auto-snapshot"></a>

Amazon DocumentDB 每天都会对弹性集群拍摄快照。您可以在新的或现有弹性集群快照配置中，指定首选备份时段和备份保留期。在本节中，我们将说明如何使用 AWS 管理控制台 或在弹性集群快照中设置自动备份参数 AWS CLI。

------
#### [ Using the AWS 管理控制台 ]

要为新的弹性集群快照设置自动备份，请使用 AWS 管理控制台：

1. 登录 [AWS 管理控制台](https://console.aws.amazon.com/docdb/home?region=us-east-1) 并打开 Amazon DocumentDB 控制台。

1. 在导航窗格中，选择**集群**。
**提示**  
如果您在屏幕左侧没有看到导航窗格，请在导航窗格左上角选择菜单图标。

1. 在**集群标识符**中，选择要更改其备份设置的集群左侧的按钮。

1. 依次选择**操作**和**修改**。

1. 在**备份**部分，根据您的备份要求编辑字段。  
![\[显示用于配置集群备份时段的步骤的“Backup (备份)”窗格屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/ec-backup.png)

   1. **备份留存期**：在列表中，选择在删除此集群的自动备份前保留它们的天数。

   1. **备份时段**：设置 Amazon DocumentDB 要备份此集群的每日时间和持续时间。

      1. 如果要配置创建备份的时间和时长，请选择**选择时段**。

         **开始时间**：在第一个列表中，选择开始自动备份的开始时间小时 (UTC)。在第二个列表中，选择您希望自动备份开始的时间（分钟）。

         **持续时间**：在该列表中，选择要向创建自动备份分配的小时数。

      1. 如果想要 Amazon DocumentDB 选择创建备份的时间和时长，请选择**无首选项**。

1. 完成后选择**修改集群**。

------
#### [ Using the AWS CLI ]

要使用为新的弹性集群快照设置自动备份 AWS CLI，请使用带有以下参数的`create-cluster-snapshot`操作：
+ **--preferred-backup-window**：可选。创建自动备份的每日首选时间范围。默认值是从 8 小时的时间段中随机选择一个 30 分钟的窗口。 AWS 区域

  约束：
  + 必须采用 `hh24:mi-hh24:mi` 格式。
  + 必须采用通用协调时间（UTC）。
  + 不得与首选维护时段冲突。
  + 必须至少为 30 分钟。
+ **--backup-retention-period**：可选。自动备份的保留天数。默认值是 1。

  约束：
  + 必须指定最小值 1。
  + 范围从 1 到 35。

**注意**  
只有当集群处于“活动”状态时才进行自动备份。

**注意**  
您也可以使用 `aws docdb-elastic update-cluster` 命令修改现有弹性集群的 `preferred-backup-window` 和 `backup-retention-period` 参数。

在以下示例中，将每个 *user input placeholder* 替换为您自己的信息。

以下`create-cluster`示例创建了 Amazon DocumentDB 弹性集群*sample-cluster*，自动备份的保留期为*7*几天，首选备份窗口为。*18:00-18:30 UTC*

对于 Linux、macOS 或 Unix：

```
aws docdb-elastic create-cluster \
     --cluster-name sample-cluster \
     --shard-capacity 2 \
     --shard-count 2 \
     --admin-user-name SampleAdmin \
     --auth-type PLAIN_TEXT \
     --admin-user-password SamplePass123! \
     --preferred-backup-window 18:00-18:30 \ 
     --backup-retention-period 7
```

对于 Windows：

```
aws docdb-elastic create-cluster ^
     --cluster-name sample-cluster ^
     --shard-capacity 2 ^
     --shard-count 2 ^
     --admin-user-name SampleAdmin ^
     --auth-type PLAIN_TEXT ^
     --admin-user-password SamplePass123! ^
     --preferred-backup-window 18:00-18:30 ^ 
     --backup-retention-period 7
```

------

# 停止和启动 Amazon DocumentDB 弹性集群
<a name="elastic-cluster-stop-start"></a>

停止和启动 Amazon DocumentDB 弹性集群可以帮助您控制开发和测试环境的成本。当不需要时，您可以暂时停止弹性集群，而不是在每次使用 Amazon DocumentDB 时创建和删除集群。当您恢复测试时，可以再次启动。

**Topics**
+ [停止和启动弹性集群概述](#elastic-cluster-stop-start-overview)
+ [可以在已停止的弹性集群上执行的操作](#elastic-cluster-stopped-operations)

## 停止和启动弹性集群概述
<a name="elastic-cluster-stop-start-overview"></a>

在不需要使用 Amazon DocumentDB 弹性集群期间，您可以停止该集群。然后，您可以在需要使用时再次启动集群。启动和停止简化了用于开发、测试或不需要持续可用性的类似活动的弹性集群的设置和停用过程。您可以使用 AWS 管理控制台 或通过单个操作停止和启动弹性集群。 AWS CLI 

当您的弹性集群停止后，集群存储卷保持不变。您只需在指定的保留时段内为集群存储、手动快照和自动备份存储付费。Amazon DocumentDB 会在七天后自动重新启动您的弹性集群，这样一来您的集群就可以及时获得任何所需的维护更新。当您的集群在七天后启动时，您将再次开始为使用弹性集群付费。当您的集群停止时，您无法查询您的存储卷，因为查询需要集群处于可用状态。

当 Amazon DocumentDB 弹性集群停止后，不能以任何方式修改该集群。这包括删除集群。

------
#### [ Using the AWS 管理控制台 ]

以下过程显示如何停止处于可用状态的弹性集群或启动已停止的弹性集群。

**停止或启动 Amazon DocumentDB 弹性集群**

1. [登录 AWS 管理控制台，然后在 /docdb 上打开亚马逊文档数据库控制台。https://console.aws.amazon.com](https://console.aws.amazon.com/docdb)

1. 在导航窗格中，选择**集群**。
**提示**  
如果您在屏幕左侧没有看到导航窗格，请在页面左上角选择菜单图标 (![\[Hamburger menu icon with three horizontal lines.\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/docdb-menu-icon.png))。

1. 在集群列表中，选择要停止或启动的集群名称左侧的按钮。  
![\[集群列表中的集群，集群名称左侧的复选框处于选中状态。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/cluster-list-ec.png)

1. 选择**操作**，然后选择您要在集群上执行的操作。
   + 如果您要停止集群且集群可用，则：

     1. 选择**停止**。  
![\[“操作”下拉列表，其中已选择“停止”选项。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/ec-stop.png)

     1. 在确认对话框中，确认您要通过选择**停止集群**来停止该弹性集群；或者要保持集群运行，则选择**取消**。  
![\[用于停止集群的确认对话框，“取消”和“停止集群”按钮位于底部。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/ec-stop-confirm.png)
   + 如果您要启动集群且集群处于停止状态，则选择**启动**。  
![\[“操作”下拉列表，其中已选择“启动”选项。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/ec-start.png)

1. 监控弹性集群的状态。如果您启动集群，则当集群*可用*时，您可以继续使用集群。有关更多信息，请参阅 [确定集群的状态](db-cluster-status.md)。  
![\[“集群”表中的“状态”列，其中显示了可用状态和正在启动状态。\]](http://docs.aws.amazon.com/zh_cn/documentdb/latest/developerguide/images/ec-starting-status.png)

------
#### [ Using the AWS CLI ]

以下代码示例显示如何停止处于活动或可用状态的弹性集群或启动已停止的弹性集群。

要使用停止弹性集群 AWS CLI，请使用`stop-cluster`操作。要启动已停止的集群，请使用 `start-cluster` 操作。这两个操作都使用 `--cluster-arn` 参数。

**参数：**
+ **--cluster-arn**：必填项。要停止或启动的弹性集群的 ARN 标识符。

**Example — 要停止弹性集群，请使用 AWS CLI**  
在以下示例中，将每个 *user input placeholder* 替换为您自己的信息。  
以下代码可停止 ARN 为 `arn:aws:docdb-elastic:us-east-1:477568257630:cluster/b9f1d489-6c3e-4764-bb42-da62ceb7bda2` 的弹性集群。  
弹性集群必须为活动或可用状态。
对于 Linux、macOS 或 Unix：  

```
aws docdb-elastic stop-cluster \
   --cluster-arn arn:aws:docdb-elastic:us-east-1:477568257630:cluster/b9f1d489-6c3e-4764-bb42-da62ceb7bda2
```
对于 Windows：  

```
aws docdb-elastic stop-cluster ^
   --cluster-arn arn:aws:docdb-elastic:us-east-1:477568257630:cluster/b9f1d489-6c3e-4764-bb42-da62ceb7bda2
```

**Example — 要启动弹性集群，请使用 AWS CLI**  
在以下示例中，将每个 *user input placeholder* 替换为您自己的信息。  
以下代码可启动 ARN 为 `arn:aws:docdb-elastic:us-east-1:477568257630:cluster/b9f1d489-6c3e-4764-bb42-da62ceb7bda2` 的弹性集群。  
弹性集群必须处于停止状态。
对于 Linux、macOS 或 Unix：  

```
aws docdb-elastic start-cluster \
   --cluster-arn arn:aws:docdb-elastic:us-east-1:477568257630:cluster/b9f1d489-6c3e-4764-bb42-da62ceb7bda2
```
对于 Windows：  

```
aws docdb-elastic start-cluster ^
   --cluster-arn arn:aws:docdb-elastic:us-east-1:477568257630:cluster/b9f1d489-6c3e-4764-bb42-da62ceb7bda2
```

------

## 可以在已停止的弹性集群上执行的操作
<a name="elastic-cluster-stopped-operations"></a>

在 Amazon DocumentDB 弹性集群停止后，您无法修改该集群的配置。您必须在执行任何此类管理操作之前启动该集群。

仅当再次启动后， Amazon DocumentDB 才会将任何计划的维护应用于停止的弹性集群。七天后，Amazon DocumentDB 自动启动停止的弹性集群，以使其维护状态不会落后太多。当弹性集群重新启动后，您将再次开始为集群中的分片付费。

弹性集群停止后，Amazon DocumentDB 不会执行任何自动备份，也不会延长备份留存期。

# 维护 Amazon DocumentDB 弹性集群
<a name="elastic-cluster-maintenance"></a>

**Topics**
+ [查看待处理的弹性集群维护操作](#view-elastic-cluster-maintenance)
+ [弹性集群引擎更新](#elastic-cluster-engine-updates)
+ [弹性集群操作系统更新](#elastic-cluster-os-updates)

Amazon DocumentDB 会定期对 Amazon DocumentDB 弹性集群资源执行维护。维护最常涉及对数据库引擎（弹性集群维护）或弹性集群的底层操作系统的更新（操作系统更新）。数据库引擎更新是必需的补丁，包括安全补丁、错误修复以及数据库引擎增强功能。虽然大多数操作系统补丁都是可选的，但如果在一段时间内未应用这些补丁，就可能变成必需补丁并自动应用，以保持您的安全状况。因此，我们建议在操作系统更新可用时立即将其应用于 Amazon DocumentDB 弹性集群。

数据库引擎补丁需要使 Amazon DocumentDB 弹性集群脱机一小段时间。一旦这些补丁可用后，系统会自动安排在即将到来的 Amazon DocumentDB 弹性集群计划维护时段内应用补丁。

弹性集群有各自的维护时段。您选择不立即应用的弹性集群修改会在维护时段内应用。默认情况下，在创建弹性集群时，Amazon DocumentDB 会为弹性集群分配维护时段。您可以在创建弹性集群时选择维护时段。也可以随时修改维护时段以适应您的业务计划或实践。通常，建议选择尽量减少对应用程序的影响的维护时段（例如，晚上或周末）。

## 查看待处理的弹性集群维护操作
<a name="view-elastic-cluster-maintenance"></a>

您可以使用 AWS CLI来查看维护更新是否对弹性集群可用。

如果有可用更新，您可以执行以下操作之一：
+ 推迟目前计划在下一个维护窗口内执行的维护操作（仅适用于操作系统补丁）。
+ 立即应用维护操作。
+ 计划下一个维护时段内要开始的维护操作。
+ 计划所选应用时段内要开始的维护操作。

维护时段确定待处理的操作何时开始，但不限制这些操作的总执行时间。

使用以下 AWS CLI 操作来确定哪些维护操作处于待处理状态。列出所有待处理的维护操作：

```
aws docdb-elastic list-pending-maintenance-actions
```

此操作的输出将类似如下（JSON 格式）：

```
{
'ResourcePendingMaintenanceActions': [
    {
        'ResourceArn': 'string-arn',
        'PendingMaintenanceActionDetails': [
            {
                'Action': 'ENGINE_UPDATE',
                'AutoAppliedAfterDate': 'string',  
                'ForcedApplyDate': 'string', 
                'OptInStatus': 'string', 
                'CurrentApplyDate': 'string', 
                'Description': 'string'
            },
        ]
    },
],
'NextToken': 'string'
}
```

获取给定 `resourceArn` 的待处理维护操作（如果有）：

```
aws docdb-elastic get-pending-maintenance-action --resource-arn string-arn
```

此操作的输出将类似于下文（JSON 格式）。

```
{
    'ResourcePendingMaintenanceAction': {
        'ResourceArn': 'string-arn',
        'PendingMaintenanceActionDetails': [
            {
                'Action': 'ENGINE_UPDATE',
                'AutoAppliedAfterDate': 'string', 
                'ForcedApplyDate': 'string', 
                'OptInStatus': 'string', 
                'CurrentApplyDate': 'string',
                'Description': 'string'
            }
        ]
    }
}
```

参数：
+ `ResourceArn`：待处理的维护操作应用于的资源的 Amazon DocumentDB Amazon 资源名称（ARN）。
+ `Action`：将应用于资源的待处理维护操作。

  有效值：
  + `ENGINE_UPDATE`
  + `ENGINE_UPGRADE`
  + `SECURITY_UPDATE`
  + `OS_UPDATE`
  + `MASTER_USER_PASSWORD_UPDATE`
+ `AutoAppliedAfterDate`：此日期之后的第一个维护时段。在此情况下将忽略 `NEXT_MAINTENANCE OPT_IN`。
+ `ForcedApplyDate`：无论维护时段如何都应用。在此情况下将忽略 `IMMEDIATE OPT_IN`。
+ `OptInStatus`：用于指定加入请求类型或撤消加入请求的值。不能撤消 `IMMEDIATE` 类型的加入请求。

  有效值：
  + `IMMEDIATE`：立即应用维护操作。
  + `NEXT_MAINTENANCE`：在资源的下一个维护时段内应用维护操作。
  + `APPLY_ON`：在指定的应用日期应用维护操作，而无论资源的下一个维护时段如何。
  + `UNDO_OPT_IN`：取消任何现有的 `NEXT_MAINTENANCE` 或 `APPLY_ON` 选择加入请求。
+ `CurrentApplyDate`— 如果 opt-in-type是`APPLY_ON`，则显示。
+ `Description`：维护操作的选项描述。

## 弹性集群引擎更新
<a name="elastic-cluster-engine-updates"></a>

通过 Amazon DocumentDB，您可以选择何时应用维护操作。使用 AWS CLI时，您可以决定 Amazon DocumentDB 何时应用更新。

应用待处理的维护操作：

```
aws docdb-elastic apply-pending-maintenance-action 
--resource-arn string-arn
--apply-action string-enum
--opt-in-type string-enum 
[--apply-on string-date-range]
```

参数：
+ **--resource-arn**：待处理的维护操作应用于的资源的 Amazon DocumentDB Amazon 资源名称（ARN）。
+ **--apply-action**：应用于此资源的待处理的维护操作。

  有效值：
  + `ENGINE_UPDATE`
  + `ENGINE_UPGRADE`
  + `SECURITY_UPDATE`
  + `OS_UPDATE`
  + `MASTER_USER_PASSWORD_UPDATE`
+ **--opt-in-type**：用于指定加入请求类型或撤消加入请求的值。不能撤消 `IMMEDIATE` 类型的加入请求。

  有效值：
  + `IMMEDIATE`：立即应用维护操作。
  + `NEXT_MAINTENANCE`：在资源的下一个维护时段内应用维护操作。
  + `APPLY_ON`：在指定的应用日期应用维护操作，而无论资源的下一个维护时段如何。
  + `UNDO_OPT_IN`：取消任何现有的 `NEXT_MAINTENANCE` 或 `APPLY_ON` 选择加入请求。
+ **[--apply-on]**：如果 opt-in-type 为 `APPLY_ON`，则为必需项。格式：`yyyy/MM/dd HH:mm-yyyy/MM/dd HH:mm`（此选项使用 UTC 时间。 开始时间可以是将来的任何时间，最少 30 分钟，最多 14 天，也可以是待处理操作的 force/apply 日期，以较早者为准。 开始到结束的时间范围可以是最少 30 分钟，最长可以是 8 小时。）

此操作的输出将类似如下（JSON 格式）：

```
{
 'ResourcePendingMaintenanceAction': {
        'ResourceArn': 'string-arn',
        'PendingMaintenanceActionDetails': [
            {
                'Action': 'SECURITY_UPDATE',
                'AutoAppliedAfterDate': 'string',
                'ForcedApplyDate': 'string', 
                'OptInStatus': 'IMMEDIATE', 
                'CurrentApplyDate': 'string', 
                'Description': 'string'
            },
        ]
 }
}
```

参数：
+ `ResourceArn`：待处理的维护操作应用于的资源的 Amazon DocumentDB Amazon 资源名称（ARN）。
+ `Action`：将应用于资源的待处理维护操作。

  有效值：
  + `ENGINE_UPDATE`
  + `ENGINE_UPGRADE`
  + `SECURITY_UPDATE`
  + `OS_UPDATE`
  + `MASTER_USER_PASSWORD_UPDATE`
+ `AutoAppliedAfterDate`：此日期之后的第一个维护时段。在此情况下将忽略 `NEXT_MAINTENANCE OPT_IN`。
+ `ForcedApplyDate`：无论维护时段如何都应用。在此情况下将忽略 `IMMEDIATE OPT_IN`。
+ `OptInStatus`：用于指定加入请求类型或撤消加入请求的值。不能撤消 `IMMEDIATE` 类型的加入请求。

  有效值：
  + `IMMEDIATE`：立即应用维护操作。
  + `NEXT_MAINTENANCE`：在资源的下一个维护时段内应用维护操作。
  + `APPLY_ON`：在指定的应用日期应用维护操作，而无论资源的下一个维护时段如何。
  + `UNDO_OPT_IN`：取消任何现有的 `NEXT_MAINTENANCE` 或 `APPLY_ON` 选择加入请求。
+ `CurrentApplyDate`— 如果 opt-in-type是`APPLY_ON`，则显示。
+ `Description`：维护操作的选项描述。

### 应用日期
<a name="w2aac35c29c19c13c21"></a>

每个维护操作都有一个相应的应用日期，您可以在描述待处理的维护操作时找到它们。当您阅读中待处理的维护操作的输出时 AWS CLI，会列出三个日期：
+ `CurrentApplyDate`：将立即应用或在下一个维护时段期间应用维护操作的日期。如果维护是可选的，则该值可以为 null。
+ `ForcedApplyDate`：自动应用维护的日期，与维护时段无关。
+ `AutoAppliedAfterDate`：将在该日期后的集群维护时段期间应用维护。

### 用户创建的维护操作
<a name="w2aac35c29c19c13c23"></a>

作为 Amazon Doc DBelastic ument 集群用户，您可以启动对集群配置的更新。

**更新集群主密码**

```
aws docdb-elastic update-cluster 
--cluster-arn string-arn
[--admin-user-password string]
[--auth-type string-enum]
[--apply-method string-enum]
[--apply-on string-date-range] 
#... other parameters of the API that follow here are not relevant for this configuration
```

参数：
+ **--cluster-arn**：维护操作将应用于的资源的 Amazon DocumentDB Amazon 资源名称（ARN）。
+ **[--admin-user-password]**：与管理员用户关联的密码。
+ **[--auth-type]**：身份验证类型，用于确定从何处获取用于访问弹性集群的密码。有效类型为 `PLAIN_TEXT` 和 `SECRET_ARN`。
+ **[--apply-method]**：一个值，指定所应用方法的类型。支持的值包括 `IMMEDIATE` 和 `APPLY_ON`。默认值为 `IMMEDIATE`。
+ **[--apply-on]**：如果 `apply-method` 为 `APPLY_ON`，则为必需项。格式：`yyyy/MM/dd HH:mm-yyyy/MM/dd HH:mm`（此选项使用 UTC 时间。开始时间可以是未来的任何时间，最小值为 30 分钟，最大值为 14 天。开始到结束的时段可以最少为 30 分钟，最长为 8 小时。）

此操作的输出将类似如下（JSON 格式）：

```
{
 'ResourcePendingMaintenanceAction': {
        'ResourceArn': 'string-arn',
        'PendingMaintenanceActionDetails': [
            {
                'Action': 'MASTER_USER_PASSWORD_UPDATE',
                'OptInStatus': 'APPLY_ON', 
                'CurrentApplyDate': 'string', 
                'Description': 'string'
            },
        ]
 }
}
```

### 更改您的 Amazon DocumentDB 维护窗口
<a name="w2aac35c29c19c13c25"></a>

维护时段应当选在使用量最小的时段上，因而可能必须不时予以更改。您的弹性集群只会在应用系统更改（例如，扩展存储操作更改）并且需要中断的期间出现不可用现象，且持续时间只是这些必要更改所需的最少时间。

默认值为每个 Amazon Web Services 区域 8 小时的时间段中随机选择的 30 分钟时段（随机选取周中的某天进行）。

要更改维护时段，请参阅 [修改弹性集群配置](elastic-managing.md#elastic-modify)。

## 弹性集群操作系统更新
<a name="elastic-cluster-os-updates"></a>

Amazon DocumentDB 弹性集群偶尔需要操作系统更新。Amazon DocumentDB 将操作系统升级到更新的版本，以提高数据库性能和客户的整体安保状况。操作系统更新不会更改 Amazon DocumentDB 弹性集群的集群引擎版本。

Amazon DocumentDB 弹性集群的大多数操作系统更新都是可选的，没有固定的应用日期。但是，如果在一段时间内未应用这些更新，最终可能会变成必需的更新，并在集群维护时段内自动应用。这是为了帮助维持数据库的安全状况。为避免任何意外停机，我们建议在操作系统更新可用时，尽快将其应用于 Amazon DocumentDB 弹性集群，并根据业务需求在方便的时间设置集群维护时段。

# 用于 Amazon DocumentDB 弹性集群的静态数据加密
<a name="elastic-encryption"></a>

以下主题可帮助您了解、创建和监控亚马逊 DocumentDB 弹性集群的 AWS Key Management Service 加密密钥：

**Topics**
+ [Amazon DocumentDB 弹性集群如何在中使用授权 AWS KMS](#ec-encrypt-grants)
+ [创建客户托管密钥](#ec-encrypt-create)
+ [监控您的 Amazon DocumentDB 弹性集群加密密钥](#ec-encrypt-monitor)
+ [了解详情](#ec-encrypt-learn)

Amazon DocumentDB 弹性集群会自动与 AWS Key Management Service (AWS KMS) 集成以进行密钥管理，并使用一种称为信封加密的方法来保护您的数据。有关信封加密的更多信息，请参阅 *AWS Key Management Service 开发人员指南*中的[信封加密](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping)。

A AWS KMS key 是密钥的逻辑表示形式。KMS 密钥包含元数据，如密钥 ID、创建日期、描述和密钥状态。KMS 密钥还包含用于加密和解密数据的密钥材料。有关 KMS 密钥的更多信息，请参阅 *AWS Key Management Service 开发人员指南*中的 [AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys)。

Amazon DocumentDB 弹性集群支持采用两种类型的密钥加密：
+ **AWS 自有密钥 —** Amazon DocumentDB 弹性集群默认使用这些密钥来自动加密个人身份数据。您无法查看、管理或使用 AWS自有密钥，也无法审核其使用情况。但是，无需采取任何措施或更改任何计划即可保护用于加密数据的密钥。有关更多信息，请参阅 *AWS Key Management Service 开发人员指南*中的 [AWS 自有密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)。
+ **客户管理的密钥 —** 由您创建、拥有和管理 AWS KMS keys 的 Symmetric 密钥。由于您可以完全控制这层加密，因此可以执行以下任务：
  + 制定和维护关键策略
  + 建立和维护 IAM 策略和授权
  + 启用和禁用密钥策略
  + 轮换加密材料
  + 添加 标签
  + 创建密钥别名
  + 安排密钥删除

  有关更多信息，请参阅 *AWS Key Management Service 开发人员指南*中的[客户托管密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。

**重要**  
您必须使用对称加密 KMS 密钥加密您的集群，因为 Amazon DocumentDB 仅支持对称加密 KMS 密钥。请勿使用非对称 KMS 密钥尝试对 Amazon DocumentDB elastic 集群中的数据进行加密。有关更多信息，请参阅AWS Key Management Service 开发人员指南**中的[非对称密钥 AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)。  
如果 Amazon DocumentDB 不再能够有权访问集群的加密密钥（例如，在撤销密钥访问权限时），加密的集群将进入终末状态。在此情况下，您只能从备份还原集群。对于 Amazon DocumentDB，备份始终启用 1 天。此外，如果您禁用已加密 Amazon DocumentDB 集群的密钥，您最终将失去对该集群的读写访问权限。如果 Amazon DocumentDB 遇到用它无法访问的密钥加密的集群，则它会使该集群进入最终状态。在此状态下，集群不再可用，并且数据库的当前状态无法恢复。若要还原集群，您必须重新启用对 Amazon DocumentDB 的加密密钥的访问，然后从备份还原集群。

**重要**  
在已创建加密集群的 KMS 密钥后，您无法更改它。请确保先确定您的加密密钥要求，然后再创建加密的弹性集群。

## Amazon DocumentDB 弹性集群如何在中使用授权 AWS KMS
<a name="ec-encrypt-grants"></a>

Amazon DocumentDB 弹性集群需要 [授权](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) 来使用客户托管密钥。

当您创建使用客户托管密钥加密的集群时，Amazon DocumentDB 弹性集群会通过向发送`CreateGrant`请求来代表您创建授权。 AWS KMS中的授权 AWS KMS 用于向 Amazon DocumentDB 弹性集群提供访问客户账户中的 KMS 密钥的权限。

Amazon DocumentDB 弹性集群要求该授权对以下内部操作使用您的客户托管密钥：
+ 向发送`DescribeKey`请求， AWS KMS 以验证在创建跟踪器或地理围栏集合时输入的对称客户管理的 KMS 密钥 ID 是否有效。
+ 向发送`GenerateDataKey`请求 AWS KMS 以生成由您的客户托管密钥加密的数据密钥。
+ 向发送解密加密数据密钥的`Decrypt`请求，以便这些密钥可用于加密您的数据。 AWS KMS 
+ 您可以随时撤销授予访问权限，或删除服务对客户托管密钥的访问权限。如果您这样做，Amazon DocumentDB 弹性集群将不能访问由客户托管密钥加密的任何数据，这影响依赖于该数据的操作。

## 创建客户托管密钥
<a name="ec-encrypt-create"></a>

您可以使用 AWS 管理控制台 或 AWS KMS API 创建对称的客户托管密钥。

**对称客户托管密钥创建**

遵循 *AWS Key Management Service 开发人员指南*中[创建对称性客户托管密钥](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)的步骤。

**密钥策略**

密钥策略控制对客户自主管理型密钥的访问。每个客户托管式密钥必须只有一个密钥策略，其中包含确定谁可以使用密钥以及如何使用密钥的声明。创建客户托管式密钥时，可以指定密钥策略。有关更多信息，请参阅位于*AWS Key Management Service 开发人员指南AWS Key Management Service 的*[概述](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)中的 KMS 密钥访问信息。

要将您的客户托管密钥配合 Amazon DocumentDB 弹性集群资源一起使用，则必须在密钥策略中允许以下 API 操作：
+ [https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)：向客户托管密钥添加授权。授予对指定 KMS 密钥的控制访问权限，这允许 Amazon Location Service 要求的授权操作。有关授权的更多信息，请参阅 *AWS Key Management Service 开发人员指南*中的[授权 AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)。
+ [https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)：提供客户托管式密钥详细信息以允许 Docdb Elastic 验证密钥。
+ [https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)：允许 Docdb Elastic 使用存储的已加密数据密钥访问已加密数据。
+ [https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)：允许 Docdb Elastic 生成并存储已加密的数据密钥，因为数据密钥并不立即用于加密。

有关更多信息，请参阅*AWS Key Management Service 开发人员指南*[中的密钥策略中的 AWS 服务权限](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-services.html)和[密钥访问疑难解答](https://docs.aws.amazon.com/kms/latest/developerguide/policy-evaluation.html)。

**通过 IAM 策略限制客户访问托管密钥**

除了 KMS 密钥策略外，您还可以在 IAM policy 略中限制 KMS 密钥权限。

您可以通过各种方式使 IAM 策略更严格。例如，要允许客户管理密钥仅用于源自 Amazon DocumentDB 弹性集群的请求，您可以将 [`kms:ViaService` 条件键 ](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service) 与 `docdb-elastic.<region-name>.amazonaws.com` 值结合使用。

有关更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的 [Allowing users in other accounts to use a KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html)。

## 监控您的 Amazon DocumentDB 弹性集群加密密钥
<a name="ec-encrypt-monitor"></a>

当您将 AWS KMS key 客户托管密钥与 Docdb Elastic 资源一起使用时，您可以使用 AWS CloudTrail 或 Amazon CloudWatch Logs 来跟踪 Docdb Elastic 发送到的请求。 AWS KMS

以下示例是`CreateGrant`、`GenerateDataKeyWithoutPlainText``Decrypt`、和`DescribeKey`监控 Amazon DocumentDB 弹性集群为访问由您的客户托管密钥加密的数据而调用的 AWS KMS key 操作 AWS CloudTrail 的事件：

------
#### [ CreateGrant ]

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
        "accountId": "111122223333",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE3",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAIGDTESTANDEXAMPLE",
                "arn": "arn:aws:iam::111122223333:assumed-role/Admin/Sampleuser01",
                "accountId": "111122223333",
                "userName": "Sampleuser01"
            },
            "webIdFederationData": {},
            "attributes": {
                "creationDate": "2023-05-09T23:04:20Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "docdb-elastic.amazonaws.com"
    },
    "eventTime": "2023-05-09T23:55:48Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "CreateGrant",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "docdb-elastic.amazonaws.com",
    "userAgent": "docdb-elastic.amazonaws.com",
    "requestParameters": {
        "retiringPrincipal": "docdb-elastic.us-east-1.amazonaws.com",
        "granteePrincipal": "docdb-elastic.us-east-1.amazonaws.com",
        "operations": [
            "Decrypt",
            "Encrypt",
            "GenerateDataKey",
            "GenerateDataKeyWithoutPlaintext",
            "ReEncryptFrom",
            "ReEncryptTo",
            "CreateGrant",
            "RetireGrant",
            "DescribeKey"
        ],
        "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
    },
    "responseElements": {
        "grantId": "0ab0ac0d0b000f00ea00cc0a0e00fc00bce000c000f0000000c0bc0a0000aaafSAMPLE",
        "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
    },
    "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "readOnly": false,
    "resources": [
        {
            "accountId": "AWS Internal",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```

------
#### [ GenerateDataKey ]

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
        "accountId": "111122223333",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE3",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAIGDTESTANDEXAMPLE",
                "arn": "arn:aws:iam::111122223333:assumed-role/Admin/Sampleuser01",
                "accountId": "111122223333",
                "userName": "Sampleuser01"
            },
            "webIdFederationData": {},
            "attributes": {
                "creationDate": "2023-05-10T18:02:59Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "docdb-elastic.amazonaws.com"
    },
    "eventTime": "2023-05-10T18:03:25Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "GenerateDataKey",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "docdb-elastic.amazonaws.com",
    "userAgent": "docdb-elastic.amazonaws.com",
    "requestParameters": {
        "keySpec": "AES_256",
        "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
    },
    "responseElements": null,
    "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "readOnly": true,
    "resources": [
        {
            "accountId": "AWS Internal",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```

------
#### [ Decrypt ]

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
        "accountId": "111122223333",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE3",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAIGDTESTANDEXAMPLE",
                "arn": "arn:aws:iam::111122223333:assumed-role/Admin/Sampleuser01",
                "accountId": "111122223333",
                "userName": "Sampleuser01"
            },
            "webIdFederationData": {},
            "attributes": {
                "creationDate": "2023-05-10T18:05:49Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "docdb-elastic.amazonaws.com"
    },
    "eventTime": "2023-05-10T18:06:19Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Decrypt",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "docdb-elastic.amazonaws.com",
    "userAgent": "docdb-elastic.amazonaws.com",
    "requestParameters": {
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT"
    },
    "responseElements": null,
    "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "readOnly": true,
    "resources": [
        {
            "accountId": "AWS Internal",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```

------
#### [ DescribeKey ]

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
        "accountId": "111122223333",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE3",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAIGDTESTANDEXAMPLE",
                "arn": "arn:aws:iam::111122223333:assumed-role/Admin/Sampleuser01",
                "accountId": "111122223333",
                "userName": "Sampleuser01"
            },
            "webIdFederationData": {},
            "attributes": {
                "creationDate": "2023-05-09T23:04:20Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "docdb-elastic.amazonaws.com"
    },
    "eventTime": "2023-05-09T23:55:48Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "DescribeKey",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "docdb-elastic.amazonaws.com",
    "userAgent": "docdb-elastic.amazonaws.com",
    "requestParameters": {
        "keyId": "alias/SampleKmsKey"
    },
    "responseElements": null,
    "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "readOnly": true,
    "resources": [
        {
            "accountId": "AWS Internal",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-123456SAMPLE"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```

------

## 了解详情
<a name="ec-encrypt-learn"></a>

以下资源提供有关静态数据加密的更多信息：
+ 有关 AWS KMS 概念的更多信息，请参阅《*AWS Key Management Service 开发者指南》*中的[AWS Key Management Service 基本概念](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html)。
+ 有关 AWS KMS 安全的更多信息，请参阅《*AWS Key Management Service 开发人员指南》 AWS Key Management Service*中的[安全最佳实践](https://docs.aws.amazon.com/kms/latest/developerguide/best-practices.html)。

# 弹性集群中的服务关联角色
<a name="elastic-service-linked-roles"></a>

亚马逊 DocumentDB 弹性集群使用 AWS Identity and Access Management (IAM) [服务相关](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)角色。服务关联角色是一种独特类型的 IAM 角色，它与 Amazon DocumentDB 弹性集群直接相关。服务相关角色由 Amazon DocumentDB 弹性集群预定义，包括该服务代表您调用 AWS 其他服务所需的所有权限。

服务关联角色使得可以更轻松地设置 Amazon DocumentDB 弹性集群，因为您不必手动添加必要的权限。Amazon DocumentDB 弹性集群定义了其服务关联角色的权限，除另有定义外，只有 Amazon DocumentDB 弹性集群可以担当该角色。定义的权限包括信任策略和权限策略，而且权限策略不能附加到任何其他 IAM 实体。只有在首先删除角色的相关资源后，才能删除角色。这样可以保护您的 Amazon DocumentDB 弹性集群资源，因为您不会无意中移除访问资源所需的权限。

有关支持服务关联角色的其他服务的信息，请参阅[与 IAM 配合使用的AWS 服务](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)，并查找**服务关联角色**列中标记为**是**的服务。请选择是与查看该服务的服务关联角色文档的链接。

## 弹性集群的服务关联角色权限
<a name="permissions"></a>

Amazon DocumentDB 弹性集群使用名为的服务相关角色`AWS ServiceRoleForDocDB-Elastic`来允许 Amazon DocumentDB 弹性集群代表您的集群调用 AWS 服务。

此服务相关角色附加了一个名为 `AmazonDocDB-ElasticServiceRolePolicy` 的权限策略，授予其在您的账户中操作的权限。角色权限策略允许 Amazon DocumentDB 弹性集群对指定资源完成以下操作：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudwatch:PutMetricData"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "cloudwatch:namespace": [
                        "AWS/DocDB-Elastic"
                    ]
                }
            }
        }
    ]
}
```

------

**注意**  
您必须配置权限，允许 IAM 实体（如用户、组或角色）创建、编辑或删除服务关联角色。如果您遇到以下错误消息：**“不能创建资源。Verify that you have permission to create service linked role。否则，请等待并稍后再试。”**确保您已启用以下权限：

```
{
"Action": "iam:CreateServiceLinkedRole",
    "Effect": "Allow",
    "Resource": "arn:aws:iam::*:role/aws-service-role/docdb-elastic.amazonaws.com/AWSServiceRoleForDocDB-Elastic",
    "Condition": {
"StringLike": {
"iam:AWSServiceName":"docdb-elastic.amazonaws.com"
        }
    }
}
```

有关更多信息，请参阅 *AWS 身份和访问用户指南*中的[服务关联角色权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)。

### 创建 Amazon DocumentDB 弹性集群的服务关联角色
<a name="w2aac35c33c11c19"></a>

您无需手动创建服务关联角色。创建数据库实例时，Amazon DocumentDB 弹性集群将为您创建一个服务关联角色。

### 编辑 Amazon DocumentDB 弹性集群的服务关联角色
<a name="w2aac35c33c11c21"></a>

Amazon DocumentDB 弹性集群不允许您编辑 `AWS ServiceRoleForDocDB-Elastic` 服务关联角色。创建服务关联角色后，您将无法更改角色的名称，因为可能有多种实体引用该角色。但是可以使用 IAM 编辑角色描述。有关更多信息，请参阅 *AWS 身份和访问用户指南*中的[编辑服务关联角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)。

#### 删除 Amazon DocumentDB 弹性集群的服务关联角色
<a name="w2aac35c33c11c21b5b1"></a>

如果您不再需要使用某个需要服务相关角色的功能或服务，我们建议您删除该角色。这样您就没有未被主动监控或维护的未使用实体。但是，您必须先删除所有 集群，然后才能删除服务相关角色。

##### 清除服务相关角色
<a name="w2aac35c33c11c21b5b1b5"></a>

必须先确认服务相关角色没有活动会话并删除该角色使用的任何资源，然后才能使用 IAM 删除服务相关角色。

在 IAM 控制台中检查服务相关角色是否具有活动会话

1. 登录到 [AWS 管理控制台](https://console.aws.amazon.com/iam/) 并打开 IAM 控制台。

1. 在 IAM 控制台的导航窗格中，选择**角色**。然后选择 `AWS ServiceRoleForDocDB-Elastic` 角色的名称（不是复选框）。

1. 在所选角色的 **Summary (摘要)** 页面上，选择 **Access Advisor (访问顾问)** 选项卡。

**注意**  
如果您不确定 Amazon DocumentDB 弹性集群是否在使用 `AWS ServiceRoleForDocDB-Elastic` 角色，可以尝试删除该角色。如果服务正在使用该角色，则删除将失败，您可以查看该角色的使用 AWS 区域 位置。如果该角色已被使用，则您必须等待会话结束，然后才能删除该角色。您无法撤销服务相关角色对会话的权限。  
如果您要删除 `AWS ServiceRoleForDocDB-Elastic` 角色，则必须先删除您的所有集群。

##### 删除所有集群
<a name="w2aac35c33c11c21b5b1b7"></a>

在 Amazon DocumentDB 控制台删除集群

1. 登录 [AWS 管理控制台](https://console.aws.amazon.com/docdb) 并打开 Amazon DocumentDB 控制台。

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

1. 选择要删除的集群。

1. 对于**操作**，选择**删除**。

1. 如果系统提示您**是否创建最终快照？**，请选择**是**或**否**。

1. 如果您在上一步中选择了 **Yes (是)**，请为 **Final snapshot name (最终快照名称)** 输入最终快照的名称。

1. 选择**删除**。

**注意**  
您可以使用 IAM 控制台、IAM CLI 或 IAM API 来删除 `AWS ServiceRoleForDocDB-Elastic` 服务关联角色。有关更多信息，请参阅 *AWS 身份和访问用户指南*中的[删除服务关联角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)。