在 Amazon OpenSearch Service 中创建索引快照 - 亚马逊 OpenSearch 服务
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

在 Amazon OpenSearch Service 中创建索引快照

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

OpenSearch Service 快照有以下形式:

  • 自动快照仅用于集群恢复。在发生红色群集状态或数据丢失时,您可以使用它们还原域。有关更多信息,请参阅恢复快照。OpenSearch Service 将自动快照存储在预配置的 Amazon S3 存储桶中,无需额外付费。

  • 手动快照用于集群恢复或者将数据从一个集群移动到另一个集群。必须启动手动快照。这些快照将存储在您自己的 Amazon S3 存储桶中,收取标准 S3 费用。如果您有来自自行托管的 OpenSearch 集群的快照,那么甚至可以使用该快照迁移到 OpenSearch Service 域。有关更多信息,请参阅迁移至 Amazon OpenSearch Service

所有 OpenSearch Service 域都制作自动快照,但频率在以下方面有所不同:

  • 对于运行 OpenSearch 或 Elasticsearch 5.3 及更高版本的域,OpenSearch Service 会每小时自动制作快照,并且将最多 336 个快照保留 14 天时间。由于其增量性质,每小时快照的破坏性较小。如果出现域问题,它们还提供更新的恢复点。

  • 对于运行 Elasticsearch 5.1 及更低版本的域,OpenSearch Service 会每日自动制作快照,并且将最多 14 个快照保留 30 天时间。

如果您的集群进入红色状态,则所有自动快照都会失败,而集群状态仍然存在。如果您在两周内未解决问题,则可能会永久丢失集群内的数据。有关问题排查步骤,请参阅红色集群状态

先决条件

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

先决条件 描述
S3 存储桶

创建 S3 存储桶以存储您的 OpenSearch Service 域的手动快照。有关说明,请参阅 Amazon Simple Storage Service 用户指南中的创建存储桶

记住要在以下位置使用它的存储桶名称:

  • 附加到 IAM 角色的 IAM policy 的 Resource 语句

  • 用于注册快照存储库的 Python 客户端(如果使用此方法)

重要

请勿对此存储桶应用 S3 Glacier 生命周期规则。手动快照不支持 S3 Glacier 存储类。

IAM 角色

创建 IAM 角色向 OpenSearch Service 委派权限。有关说明,请参阅 IAM 用户指南中的创建 IAM 角色(控制台)。本章剩余部分将此角色称为 TheSnapshotRole

附加 IAM policy

将下面的策略附加到 TheSnapshotRole 以允许访问 S3 存储桶:

{ "Version": "2012-10-17", "Statement": [{ "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::s3-bucket-name" ] }, { "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::s3-bucket-name/*" ] } ] }

有关附加托管策略的说明,请参阅 IAM 用户指南中的添加 IAM 身份权限

编辑信任关系

编辑TheSnapshotRole 的信任关系以指定 Principal 语句中的 OpenSearch Service,如以下示例所示:

{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": "sts:AssumeRole" }] }

有关编辑信任关系的说明,请参阅 IAM 用户指南中的修改角色信任策略

权限

为了注册快照存储库,您需要能够将 TheSnapshotRole 传递到 OpenSearch Service。还需要对 es:ESHttpPut 操作的访问权限。要授予这两个权限,请将以下策略附加到 IAM 角色,该角色的凭据用于签署请求:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::123456789012:role/TheSnapshotRole" }, { "Effect": "Allow", "Action": "es:ESHttpPut", "Resource": "arn:aws:es:region:123456789012:domain/domain-name/*" } ] }

如果您的用户或角色没有 iam:PassRole 权限传递 TheSnapshotRole,在下一步骤中尝试注册存储库时,您可能会遇到以下常见错误:

$ python register-repo.py {"Message":"User: arn:aws:iam::123456789012:user/MyUserAccount is not authorized to perform: iam:PassRole on resource: arn:aws:iam::123456789012:role/TheSnapshotRole"}

删除手动快照

要删除手动快照,运行下列命令:

DELETE _snapshot/repository-name/snapshot-name

使用索引状态管理自动执行快照

您可以使用索引状态管理(ISM)snapshot 操作,以根据索引的年龄、大小或文档数量的变化自动触发索引快照。如果需要为每个索引创建一个快照,ISM 是最佳选择。如果需要为一组索引创建快照,请参阅 使用快照管理自动处理快照

要在 OpenSearch Service 中使用 SM,您需要自行注册 Amazon S3 存储库。有关使用snapshot操作的 ISM 示例,请参阅示例策略

将 Curator 用于快照

如果 ISM 不适用于索引和快照管理,则可以改用 Curator。它提供了高级筛选功能,可帮助简化复杂集群上的任务。使用 pip 安装 Curator:

pip install elasticsearch-curator

您可以使用 Curator 作为命令行界面 (CLI) 或 Python API。如果您使用 Python API,则必须使用旧式 elasticsearch-py 客户端的版本 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