

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

# 在 Amazon OpenSearch 服务中创建索引快照
<a name="managedomains-snapshots"></a>

Amazon S OpenSearch ervice 中的快照是集群索引和状态的备份。*状态*包含集群设置、节点信息、索引设置和分片分配。

OpenSearch 服务快照有以下几种形式：
+ **自动快照**仅用于集群恢复。在发生红色群集状态或数据丢失时，您可以使用它们还原域。有关更多信息，请参阅下面的[恢复快照](managedomains-snapshot-restore.md)。 OpenSearch 该服务将自动快照存储在预配置的 Amazon S3 存储桶中，无需额外付费。
+ **手动快照**用于集群恢复*或者*将数据从一个集群移动到另一个集群。必须启动手动快照。这些快照将存储在您自己的 Amazon S3 存储桶中，收取标准 S3 费用。如果您有来自自管理 OpenSearch 集群的快照，则可以使用该快照迁移到 OpenSearch 服务域。有关更多信息，请参阅[迁移到 Amazon OpenSearch 服务](migration.md)。

所有 OpenSearch 服务域都会自动拍摄快照，但频率在以下方面有所不同：
+ 对于运行 OpenSearch 或 Elasticsearch 5.3 及更高版本的域名，S OpenSearch ervice 会按小时自动拍摄快照，并将其中最多 336 张快照保留 14 天。由于其增量性质，每小时快照的破坏性较小。如果出现域问题，它们还提供更新的恢复点。
+ 对于运行 Elasticsearch 5.1 及更早版本的域名，S OpenSearch ervice 会在您指定的时间内每天自动拍摄快照，最多保留 14 张快照，并且不会将任何快照数据保留超过 30 天。

如果您的集群进入红色状态，则所有自动快照都会失败，而集群状态仍然存在。如果您在两周内未解决问题，则可能会永久丢失集群内的数据。有关问题排查步骤，请参阅[红色集群状态](handling-errors.md#handling-errors-red-cluster-status)。

## 先决条件
<a name="managedomains-snapshot-prerequisites"></a>

要手动创建快照，您必须使用 IAM 和 Amazon S3。确保您已满足以下先决条件，然后再尝试创建快照。


****  

| 先决条件  | 说明 | 
| --- | --- | 
| S3 存储桶 | 创建 S3 存储桶来存储 OpenSearch 服务域的手动快照。有关说明，请参阅《Amazon Simple Storage Service 入门指南》** 中的[创建通用存储桶](https://docs.amazonaws.cn/AmazonS3/latest/userguide/create-bucket-overview.html)。 记住要在以下位置使用它的存储桶名称：[\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/opensearch-service/latest/developerguide/managedomains-snapshots.html)  请勿对此存储桶应用 Amazon Glacier 生命周期规则。手动快照不支持 Amazon Glacier 存储类别。  | 
| IAM 角色 | 创建 IAM 角色以向 OpenSearch 服务委派权限。有关说明，请参阅 *IAM 用户指南*中的[创建 IAM 角色（控制台）](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console)。本章剩余部分将此角色称为 `TheSnapshotRole`。 **附加 IAM policy** 将下面的策略附加到 `TheSnapshotRole` 以允许访问 S3 存储桶： [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/opensearch-service/latest/developerguide/managedomains-snapshots.html) 有关将策略附加到角色的说明，请参阅《IAM 用户指南》**中的[添加 IAM 身份权限（控制台）](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#add-policies-console)。 **编辑信任关系** 编辑的信任关系`TheSnapshotRole`以在`Principal`语句中指定 S OpenSearch ervice，如以下示例所示： [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/opensearch-service/latest/developerguide/managedomains-snapshots.html) 有关编辑信任关系的说明，请参阅《IAM 用户指南》**中的[更新角色信任策略](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_update-role-trust-policy.html)。 | 
| Permissions |  要注册快照存储库，您需要能够传递`TheSnapshotRole`给 OpenSearch 服务。还需要对 `es:ESHttpPut` 操作的访问权限。要授予这两个权限，请将以下策略附加到 IAM 角色，该角色的凭据用于签署请求： [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/opensearch-service/latest/developerguide/managedomains-snapshots.html) 如果您的用户或角色没有 `iam:PassRole` 权限传递 `TheSnapshotRole`，在下一步骤中尝试注册存储库时，您可能会遇到以下常见错误： <pre>$ python register-repo.py<br />{"Message":"User: arn:aws:iam::123456789012:user/MyUserAccount<br />is not authorized to perform: iam:PassRole on resource:<br />arn:aws:iam::123456789012:role/TheSnapshotRole"}</pre>  | 

## 删除手动快照
<a name="managedomains-snapshot-delete"></a>

要删除手动快照，运行下列命令：

```
DELETE _snapshot/repository-name/snapshot-name
```

## 使用索引状态管理自动执行快照
<a name="managedomains-snapshot-ism"></a>

您可以使用索引状态管理（ISM）[快照](https://opendistro.github.io/for-elasticsearch-docs/docs/im/ism/policies/#snapshot)操作，以根据索引的年龄、大小或文档数量的变化自动触发索引快照。如果需要为每个索引创建一个快照，ISM 是最佳选择。如果需要为一组索引创建快照，请参阅 [使用快照管理自动处理快照](managedomains-snapshot-mgmt.md)。

要在 OpenSearch 服务中使用 SM，您需要注册自己的 Amazon S3 存储库。有关使用`snapshot`操作的 ISM 示例，请参阅[示例策略](ism.md#ism-example)。

## 将 Curator 用于快照
<a name="managedomains-snapshot-curator"></a>

如果 ISM 不适用于索引和快照管理，则可以改用 Curator。它提供了高级筛选功能，可帮助简化复杂集群上的任务。使用 [pip](https://pip.pypa.io/en/stable/installing/) 安装 Curator：

```
pip install elasticsearch-curator
```

您可以使用 Curator 作为命令行界面 (CLI) 或 Python API。如果您使用 Python API，则必须使用旧式 [elasticsearch-py](https://elasticsearch-py.readthedocs.io/) 客户端的版本 7.13.4 或更早版本。它不支持 opensearch-py 客户端。

如果您使用 CLI，请在命令行处导出您的凭证并配置 `curator.yml`，如下所示：

```
client:
  hosts: search-my-domain.us-west-1.es.amazonaws.com
  port: 443
  use_ssl: True
  aws_region: us-west-1
  aws_sign_request: True
  ssl_no_validate: False
  timeout: 60

logging:
  loglevel: INFO
```