Amazon OpenSearch Service でのインデックススナップショットの作成 - Amazon OpenSearch Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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 は 1 時間ごとに自動的にスナップショットを取得し、最大 336 個のスナップショットを 14 日間保持します。時間単位のスナップショットは増分的な性質があるため、中断が少なくなります。また、ドメインの問題が発生した場合に、より最近のリカバリポイントを提供します。

  • Elasticsearch 5.1 以前を実行しているドメインでは、OpenSearch Service は 1 日ごとに指定する時刻に自動でスナップショットを取得し、14 個のスナップショットを 保持しますが、30 日間を超えてスナップショットデータを保持することはありません。

クラスターのステータスが赤になると、クラスターのステータスが維持されている間、すべての自動スナップショットが失敗します。2 週間以内にこの問題を解決しない場合、クラスターのデータは永遠に失われます。トラブルシューティングステップについては、「赤のクラスター状態」を参照してください。

前提条件

スナップショットを手動で作成するには、IAM および Amazon S3 を使用して作業する必要があります。スナップショットの取得を試す前に、次の前提条件を満たしていることを確認します。

前提条件 説明
S3 バケット

OpenSearch Service ドメイン用の手動スナップショットを保存するための S3 バケットを作成します。手順については、Amazon Simple Storage Service ユーザーガイドの「最初のバケットを作成する」を参照してください。

次の場所で使用するには、バケットの名前を覚えておいてください。

  • IAM ロールにアタッチされた IAM ポリシーの Resource ステートメント

  • スナップショットリポジトリの登録に使用する Python クライアント (この方法を使用する場合)

重要

S3 Glacier ライフサイクルルールをこのバケットに適用しないでください。手動スナップショットは、S3 Glacier ストレージクラスをサポートしていません。

IAM ロール

OpenSearch Service に許可を委任する IAM ロールを作成します。手順については、IAM ユーザーガイドの「IAM ロールの作成 (コンソール)」を参照してください。この章の残りの部分では、このロールを TheSnapshotRole と呼びます。

IAM ポリシーのアタッチ

次のポリシーを 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 ID 許可の追加」を参照してください。

信頼関係を編集する

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/*" } ] }

ユーザーまたはロールが TheSnapshotRole を渡すための iam:PassRole 許可を持っていない場合、次のステップでリポジトリを登録しようとすると、次の一般的なエラーが発生することがあります。

$ 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

インデックスステート管理を用いたスナップショットの自動化

Index State Management (ISM) snapshot オペレーションを使用して、経過時間、サイズ、ドキュメント数の変化に基づいてインデックスのスナップショットを自動的にトリガーできます。ISM は、インデックスごとに 1 つのスナップショットが必要な場合に最適です。インデックスグループのスナップショットが必要な場合は、「Snapshot Management を用いたスナップショットの自動化」を参照してください。

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