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

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

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

Amazon OpenSearch Service のスナップショットは、クラスターのインデックスと状態のバックアップです。状態には、クラスター設定、ノード情報、インデックス設定、シャードの割り当てなどが含まれます。

OpenSearch サービススナップショットには次の形式があります。

  • 自動スナップショットは、クラスターの復元専用です。クラスターのステータスが赤くなった場合や、データが失われた場合に、ドメインを復元するために使用できます。詳細については、以下の「スナップショットの復元」を参照してください。 OpenSearch サービスは、自動スナップショットを事前設定された Amazon S3 バケットに追加料金なしで保存します。

  • 手動スナップショットは、クラスターの復元、またはクラスター間でのデータの移行に使用します。手動スナップショットを開始する必要があります。これらのスナップショットは独自の Amazon S3 バケットに保存され、標準の S3 料金が適用されます。セルフマネージド OpenSearch クラスターのスナップショットがある場合は、そのスナップショットを使用して OpenSearch サービスドメインに移行できます。詳細については、「Amazon OpenSearch Service への移行」を参照してください。

すべての OpenSearch サービスドメインは自動スナップショットを作成しますが、頻度は次の点で異なります。

  • OpenSearch または Elasticsearch 5.3 以降を実行しているドメインの場合、 OpenSearch Service は 1 時間ごとに自動スナップショットを取得し、そのうち最大 336 個を 14 日間保持します。時間単位のスナップショットは増分的な性質があるため、中断が少なくなります。また、ドメインの問題が発生した場合に、より最近のリカバリポイントを提供します。

  • Elasticsearch 5.1 以前を実行しているドメインの場合、 OpenSearch Service は指定した時間内に毎日自動スナップショットを取得し、そのうち最大 14 個を保持し、30 日以上スナップショットデータを保持しません。

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

前提条件

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

前提条件 説明
S3 バケット

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

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

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

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

重要

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

IAM ロール

サービスにアクセス許可を委任する IAM OpenSearch ロールを作成します。手順については、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 サービスを指定します。

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

信頼関係を編集する手順については、IAM ユーザーガイドの「ロールの信頼ポリシーの変更」を参照してください。

アクセス許可

スナップショットリポジトリを登録するには、 TheSnapshotRoleを OpenSearch サービスに渡す必要があります。さらに、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"}

手動スナップショットレポジトリの登録

手動インデックススナップショットを作成する前に、スナップショットリポジトリを OpenSearch Service に登録する必要があります。この 1 回限りのオペレーションでは、「」で説明されているようにTheSnapshotRole、 へのアクセスが許可されている認証情報を使用して AWS リクエストに署名する必要があります前提条件

ステップ 1: OpenSearch Dashboards でスナップショットロールをマッピングする (きめ細かなアクセスコントロールを使用している場合)

きめ細かなアクセスコントロールにより、リポジトリの登録時に追加のステップが導入されます。HTTP 基本認証を他のすべての目的で使用する場合でも、TheSnapshotRoleを渡すための iam:PassRole 許可を持っている IAM ロールまたはユーザーに manage_snapshots ロールをマップする必要があります。

  1. OpenSearch サービスドメインの OpenSearch Dashboards プラグインに移動します。Dashboards エンドポイントは、 OpenSearch サービスコンソールのドメインダッシュボードにあります。

  2. メインメニューから [セキュリティ]、[ロール] を選択し、[manage_snapshots] ロールを選択します。

  3. [マッピングされたユーザー]、[マッピングの管理] を選択します。

  4. TheSnapshotRole を渡すための許可を持っているロールの ARN を追加します。[Backend roles] (バックエンドロール) の下にロール ARN を配置します

    arn:aws:iam::123456789123:role/role-name
  5. [マップ] を選択し、ユーザーまたはロールが [マッピングされたユーザー] の下に表示されていることを確認します。

ステップ 2: リポジトリを登録する

次の [Snapshots] (スナップショット) のタブには、スナップショットディレクトリの登録方法が記されています。手動スナップショットの暗号化に関するオプションと、新しいドメインに移行した後にスナップショットを登録する際のオプションについては、関連するタブを参照してください。

Snapshots

スナップショットリポジトリを登録するには、 OpenSearch サービスドメインエンドポイントに PUT リクエストを送信します。curlサンプル Python クライアントPostman、またはその他の方法を使用して署名付きリクエストを送信し、スナップショットリポジトリを登録できます。 OpenSearch Dashboards コンソールで PUT リクエストを使用してリポジトリを登録することはできません。

リクエストは以下のような形式です。

PUT domain-endpoint/_snapshot/my-snapshot-repo-name { "type": "s3", "settings": { "bucket": "s3-bucket-name", "base_path": "my/snapshot/directory", "region": "region", "role_arn": "arn:aws:iam::123456789012:role/TheSnapshotRole" } }
注記

リポジトリ名は「cs-」で始めることはできません。さらに、複数のドメインから同じリポジトリに書き込まない必要があります。リポジトリへの書き込みアクセス権を持つドメインは、1 つだけにする必要があります。

ドメインが Virtual Private Cloud (VPC) に存在する場合は、リクエストが正常にスナップショットレポジトリに登録するようにお使いのコンピュータが VPC に接続されていることが必要です。VPC へのアクセスはネットワーク構成によって異なりますが、VPN あるいは社内ネットワークへの接続を含む場合がよくあります。 OpenSearch サービスドメインにアクセスできることを確認するには、ウェブブラウザhttps://your-vpc-domain.region.es.amazonaws.comで に移動し、デフォルトの JSON レスポンスを受け取ることを確認します。

Amazon S3 バケットがドメイン AWS リージョン 以外の にある場合は OpenSearch、リクエスト"endpoint": "s3.amazonaws.com"に パラメータを追加します。

Encrypted snapshots

現在、 AWS Key Management Service (KMS) キーを使用して手動スナップショットを暗号化することはできませんが、サーバー側の暗号化 (SSE) を使用して保護することはできます。

スナップショットリポジトリとして使用しているバケットの S3 管理のキーを使って SSE を有効にするには、PUT リクエストの "settings" ブロックに "server_side_encryption": true を追加します。詳細については、Amazon Simple Storage Service ユーザーガイドの「Amazon S3 管理の暗号化キー によるサーバー側の暗号化を使用したデータの保護」を参照してください。

または、スナップショットリポジトリとして使用する S3 バケットのサーバー側の暗号化に AWS KMS キーを使用することもできます。この方法を使用する場合は、S3 バケットの暗号化に使用される AWS KMS キーに必ずアクセスTheSnapshotRole許可を付与してください。詳細については、「AWS KMSのキーポリシー」を参照してください。

Domain migration

スナップショットリポジトリの登録は 1 回限りのオペレーションです。ただし、1 つのドメインから別のドメインに移行するには、古いドメインと新しいドメインで同じスナップショットレポジトリを登録する必要があります。リポジトリ名は任意です。

新しいドメインに移行する場合、または同じリポジトリを複数のドメインに登録する場合は、次のガイドラインを考慮してください。

  • 新しいドメインにリポジトリを登録する場合は、"readonly": true を PUT リクエストの "settings" ブロックに追加します。この設定により、古いドメインのデータが誤って上書きされるのを防ぐことができます。リポジトリへの書き込みアクセス権を持つドメインは、1 つだけにする必要があります。

  • データを別の AWS リージョンへ移行する場合 (us-east-2 にある古いドメインとバケットから us-west-2 にある新しいドメインへ等) は、"region": "region" を PUT ステートメントの "endpoint": "s3.amazonaws.com" に置き換えて、リクエストを再送信します。

サンプル Python クライアントの使用

Python クライアントは、シンプルな HTTP リクエストよりも自動化が容易で、再利用性が向上します。この方法を使用してスナップショットリポジトリを登録する場合は、次のサンプル Python コードを register-repo.py などの Python ファイルとして保存します。クライアントでは、AWS SDK for Python (Boto3)リクエストおよび requests-aws4auth パッケージが必要になります。クライアントには、他のスナップショットオペレーションのコメントアウトされた例が含まれています。

サンプルコードで、次の変数を更新します: hostregionpath、および payload

import boto3 import requests from requests_aws4auth import AWS4Auth host = '' # domain endpoint region = '' # e.g. us-west-1 service = 'es' credentials = boto3.Session().get_credentials() awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token) # Register repository path = '/_snapshot/my-snapshot-repo-name' # the OpenSearch API endpoint url = host + path payload = { "type": "s3", "settings": { "bucket": "s3-bucket-name", "base_path": "my/snapshot/directory", "region": "us-west-1", "role_arn": "arn:aws:iam::123456789012:role/snapshot-role" } } headers = {"Content-Type": "application/json"} r = requests.put(url, auth=awsauth, json=payload, headers=headers) print(r.status_code) print(r.text) # # Take snapshot # # path = '/_snapshot/my-snapshot-repo-name/my-snapshot' # url = host + path # # r = requests.put(url, auth=awsauth) # # print(r.text) # # # Delete index # # path = 'my-index' # url = host + path # # r = requests.delete(url, auth=awsauth) # # print(r.text) # # # Restore snapshot (all indexes except Dashboards and fine-grained access control) # # path = '/_snapshot/my-snapshot-repo-name/my-snapshot/_restore' # url = host + path # # payload = { # "indices": "-.kibana*,-.opendistro_security,-.opendistro-*", # "include_global_state": False # } # # headers = {"Content-Type": "application/json"} # # r = requests.post(url, auth=awsauth, json=payload, headers=headers) # # print(r.text) # # # Restore snapshot (one index) # # path = '/_snapshot/my-snapshot-repo-name/my-snapshot/_restore' # url = host + path # # payload = {"indices": "my-index"} # # headers = {"Content-Type": "application/json"} # # r = requests.post(url, auth=awsauth, json=payload, headers=headers) # # print(r.text)

手動スナップショットの作成

スナップショットは瞬時に取得されません。完了するまでに時間がかかり、クラスターの完全な point-in-time ビューを表すものではありません。スナップショットが進行中の間も、ドキュメントのインデックス作成や、クラスターへの他のリクエストを行うことはできますが、新しいドキュメントおよび既存のドキュメントの更新は一般的にスナップショットに含まれません。スナップショットには、スナップショット OpenSearch の開始時に存在していたプライマリシャードが含まれます。スナップショットのスレッドプールのサイズによっては、わずかな時間の違いで、スナップショットにさまざまなシャードが含まれることがあります。スナップショットのベストプラクティスについては、「スナップショットパフォーマンスの向上」を参照してください。

スナップショットのストレージとパフォーマンス

OpenSearch スナップショットは増分です。つまり、最後に成功したスナップショット以降に変更されたデータのみを保存します。増分のみ保存されるため、スナップショットの取得頻度が高い場合でも低い場合でも、ディスク使用量を最小限に抑えることができます。つまり、スナップショットを 1 時間ごとに 1 週間 (合計 168 個) 取得すると、週末に 1 つのスナップショットを取得する場合よりも、使用するディスク容量は少なくなる場合があります。また、スナップショットの取得頻度が高くなるほど、完了までにかかる時間は短くなります。例えば、日次スナップショットの完了には 20~30 分かかる場合がありますが、時間単位のスナップショットは数分以内に完了することもあります。一部の OpenSearch ユーザーは、30 分ごとにスナップショットを作成します。

スナップショットを取得する

スナップショットを作成するときは、以下の情報を指定します。

  • スナップショットリポジトリの名前

  • スナップショットの名前

この章の例では、わかりやすく簡潔にするために、一般的な HTTP クライアントである curl を使用します。curl リクエストにユーザー名とパスワードを渡す方法については、「開始方法のチュートリアル」を参照してください。

アクセスポリシーでユーザーまたはロールを指定する場合は、スナップショットリクエストに署名する必要があります。curl の場合、--aws-sigv4 のオプション (バージョン 7.75.0 以降) を使用できます。また、サンプル Python クライアントのコメントアウトされた例を使って、curl コマンドが使用しているのと同じエンドポイントに、署名された HTTP リクエストを行うこともできます

手動スナップショットを作成するには、次のステップを実施します。

  1. 現在進行中のスナップショットは取得できません。確認するには、以下のコマンドを実行します。

    curl -XGET 'domain-endpoint/_snapshot/_status'
  2. 次のコマンドを実行して、手動でスナップショットを取得します。

    curl -XPUT 'domain-endpoint/_snapshot/repository-name/snapshot-name'

    特定のインデックスを包含または除外したり、他の設定を指定したりするには、リクエスト本文を追加します。リクエスト構造については、 OpenSearch ドキュメントの「スナップショットを作成する」を参照してください。

注記

スナップショットの作成に必要な時間は、 OpenSearch サービスドメインのサイズに応じて増加します。長時間実行しているスナップショット操作の場合は、504 GATEWAY_TIMEOUT エラーが発生する場合があります。通常、このエラーは無視して、オペレーションが正常に完了するのを待ってかまいません。次のコマンドを実行して、ドメインのすべてのスナップショットの状態を確認します。

curl -XGET 'domain-endpoint/_snapshot/repository-name/_all?pretty'

スナップショットの復元

スナップショットを復元する前に、宛先ドメインがスタンバイ付きマルチ AZ を使用していないことを確認してください。スタンバイが有効になっている場合、復元オペレーションは失敗します。

警告

インデックスのエイリアスを使用する場合は、インデックスを削除する前に、エイリアスへの書き込みリクエストを中止するか、エイリアスを別のインデックスに切り替える必要があります。書き込みリクエストを中止すると、次のシナリオの回避に有効です。

  1. インデックスを削除すると、そのエイリアスも削除される。

  2. 削除したばかりのエイリアスに対する障害のある書き込みリクエストにより、エイリアスと同じ名前で新しいインデックスが作成される。

  3. 新しいインデックスとの命名の競合により、エイリアスを使用できなくなる。エイリアスを別のインデックスに切り替えた場合は、スナップショットから復元するときに "include_aliases": false を指定します。

スナップショットを復元するには

  1. 復元するスナップショットを特定します。カスタムアナライザーパッケージや割り当て要件設定など、このインデックスのすべての設定がドメインと互換性があることを確認してください。すべてのスナップショットレポジトリを表示するには、次のコマンドを実行します。

    curl -XGET 'domain-endpoint/_snapshot?pretty'

    リポジトリを識別した後、次のコマンドを実行してすべてのスナップショットを表示します。

    curl -XGET 'domain-endpoint/_snapshot/repository-name/_all?pretty'
    注記

    ほとんどの自動スナップショットは、cs-automated リポジトリに保存されます。ドメインで暗号化された保管中のデータは cs-automated-enc リポジトリに保存されます。検索する手動スナップショットレポジトリが表示されない場合は、ドメインにその登録をしたことを確認します。

  2. (オプション) クラスターのインデックスとスナップショットのインデックスの間に名前の競合がある場合は、 OpenSearch サービスドメインの 1 つ以上のインデックスを削除または名前を変更します。インデックスのスナップショットを、同じ名前のインデックスがすでに含まれている OpenSearch クラスターに復元することはできません。

    インデックスの付けた名前の競合がある場合は、次のオプションがあります。

    • 既存の OpenSearch サービスドメインのインデックスを削除し、スナップショットを復元します。

    • スナップショットから復元する際、インデックスの名前を変更し、その後インデックスを再作成します。インデックスの名前を変更する方法については、 OpenSearch ドキュメントのこのリクエスト例を参照してください。

    • スナップショットを別の OpenSearch サービスドメインに復元します (手動スナップショットでのみ可能)。

    次のコマンドは、ドメイン内の既存のインデックスをすべて削除します。

    curl -XDELETE 'domain-endpoint/_all'

    ただし、すべてのインデックスを復元する予定がない場合は、インデックスを 1 つだけ削除できます。

    curl -XDELETE 'domain-endpoint/index-name'
  3. スナップショットを復元するには、次のコマンドを実行します。

    curl -XPOST 'domain-endpoint/_snapshot/repository-name/snapshot-name/_restore'

    OpenSearch Dashboards に対する特別なアクセス許可ときめ細かなアクセスコントロールインデックスにより、特に自動スナップショットから復元しようとすると、すべてのインデックスの復元が失敗する可能性があります。次の例では、1 つのインデックスである my-index2020-snapshot から cs-automated スナップショットレポジトリで復元します。

    curl -XPOST 'domain-endpoint/_snapshot/cs-automated/2020-snapshot/_restore' \ -d '{"indices": "my-index"}' \ -H 'Content-Type: application/json'

    または、Dashboards ときめ細かなアクセスコントロールインデックスを除くすべてのインデックスを復元することもできます。

    curl -XPOST 'domain-endpoint/_snapshot/cs-automated/2020-snapshot/_restore' \ -d '{"indices": "-.kibana*,-.opendistro*"}' \ -H 'Content-Type: application/json'

    rename_patternrename_replacement のパラメータを使用すると、データを削除することなくスナップショットを復元することができます。これらのパラメータの詳細については、 OpenSearch ドキュメントの「スナップショットの復元 API リクエストフィールド」と「リクエストの例」を参照してください。

注記

関連するインデックスに対してすべてのプライマリシャードを使用できなかった場合、スナップショットが PARTIALstate になっている可能性があります。この値は、1 つ以上のシャードからのデータが正しく保存されていないことを示します。部分スナップショットからの復元も可能ですが、不足しているインデックスの復元に古いスナップショットの使用が必要になる場合もあります。

手動スナップショットの削除

次のコマンドを実行して、手動スナップショットを削除します。

DELETE _snapshot/repository-name/snapshot-name

Snapshot Management を用いたスナップショットの自動化

OpenSearch Dashboards でスナップショット管理 (SM) ポリシーを設定して、スナップショットの定期的な作成と削除を自動化できます。SM は、インデックスのグループのスナップショットを作成できますが、Index State Management は、インデックスごとに 1 つのスナップショットしか作成できません。Service で SM を使用するには OpenSearch 、独自の Amazon S3 リポジトリを登録する必要があります。リポジトリの登録手順については、「手動スナップショットレポジトリの登録」を参照してください。

SM 以前は、 OpenSearch Service は、デフォルトでオンになっている無料の自動スナップショット機能を提供していました。この機能は、サービスが管理する cs-* リポジトリにスナップショットを送信します。この機能を無効にする場合は、 AWS Supportまでお問い合わせください。

SM 機能の詳細については、 OpenSearch ドキュメントの「スナップショット管理」を参照してください。

SM は、現在は、複数のインデックスタイプでのスナップショット作成をサポートしていません。例えば、* を使って複数のインデックスでスナップショットを作成する際に、一部のインデックスがウォーム層にある場合、スナップショットの作成は失敗します。スナップショットに複数のインデックスタイプを含める必要がある場合は、SM でこのオプションがサポートされるまでは、ISM スナップショットアクションを使用します。

のアクセス許可を設定します。

以前の OpenSearch サービスドメインバージョンから 2.5 にアップグレードする場合、スナップショット管理のセキュリティ許可がドメインで定義されていない可能性があります。きめ細かいアクセスコントロールを使用して、ドメインでスナップショット管理を使用するには、管理者以外のユーザーがこのロールにマッピングされている必要があります。スナップショット管理ロールを手動で作成するときは、次の手順を実行します。

  1. OpenSearch ダッシュボードで、セキュリティに移動し、アクセス許可 を選択します。

  2. [アクショングループの作成] を選択し、以下のグループを設定します。

    グループ名 許可
    snapshot_management_full_access
    • cluster:admin/opensearch/snapshot_management/*

    • cluster:admin/opensearch/notifications/feature/publish

    • cluster:admin/repository/*

    • cluster:admin/snapshot/*

    snapshot_management_read_access
    • cluster:admin/opensearch/snapshot_management/policy/get

    • cluster:admin/opensearch/snapshot_management/policy/search

    • cluster:admin/opensearch/snapshot_management/policy/explain

    • cluster:admin/repository/get

    • cluster:admin/snapshot/get

  3. [ロール]、[ロールの作成] の順に選択します。

  4. ロールに snapshot_management_role という名前を付けます。

  5. [Cluster permissions] (クラスターのアクセス権限) で、snapshot_management_full_access または snapshot_management_read_access を選択します。

  6. [作成] を選択します。

  7. ロールを作成したら、任意のユーザー、またはスナップショットを管理するバックエンドロールにそれをマッピングします。

考慮事項

Snapshot Management を設定するときは、次の点を考慮します。

  • リポジトリごとに使用できるポリシーは 1 つです。

  • 1 つのポリシーで最大 400 のスナップショットを作成できます。

  • この機能は、ドメインのステータスが赤色の場合、JVM の負荷が高い(85% 以上)場合、スナップショット機能が停止している場合は、実行されません。クラスターの全体的なインデックス作成と検索のパフォーマンスが影響を受けていると、SM も影響を受けている可能性があります。

  • スナップショットのオペレーションは、前のオペレーションが完了した後に始まるため、1 つのポリシーでスナップショットのオペレーションが並行して実行されることはありません。

  • 同じスケジュールのポリシーが複数存在すると、リソースが急増する可能性があります。ポリシーのスナップショット化したインデックスが重複している場合、シャードレベルのスナップショットオペレーションは順番にしか実行されないため、パフォーマンスの問題が連鎖的に発生する可能性があります。ポリシーがリポジトリを共有すると、そのリポジトリへの書き込みオペレーションが急増します。

  • 特別なユースケースでない限り、スナップショットオペレーションの自動化は 1 時間に 1 回以下でスケジュールすることが推奨されます。

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

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

OpenSearch サービスで 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