翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
手動スナップショットレポジトリの登録
手動インデックススナップショットを作成する前に、スナップショットリポジトリを OpenSearch Service に登録する必要があります。この 1 回限りの操作では、「」で説明されているようにTheSnapshotRole
、 へのアクセスが許可されている認証情報を使用して AWS リクエストに署名する必要があります前提条件。
ステップ 1: OpenSearch ダッシュボードにスナップショットロールをマッピングする (きめ細かなアクセスコントロールを使用している場合)
きめ細かなアクセスコントロールにより、リポジトリの登録時に追加のステップが導入されます。他のすべての目的でHTTP基本認証を使用している場合でも、 manage_snapshots
を渡すiam:PassRole
アクセス許可を持つロールにIAMロールをマッピングする必要がありますTheSnapshotRole
。
-
OpenSearch サービスドメインの OpenSearch Dashboards プラグインに移動します。Dashboards エンドポイントは、 OpenSearch サービスコンソールのドメインダッシュボードにあります。
-
メインメニューから [セキュリティ]、[ロール] を選択し、[manage_snapshots] ロールを選択します。
-
[マッピングされたユーザー]、[マッピングの管理] を選択します。
-
を渡すアクセス許可を持つロールARNの を追加します
TheSnapshotRole
。バックエンドロール ARNsの下にロールを配置します。arn:aws:iam::
123456789123
:role/role-name
-
[マップ] を選択し、ユーザーまたはロールが [マッピングされたユーザー] の下に表示されていることを確認します。
ステップ 2: リポジトリを登録する
次の [Snapshots] (スナップショット) のタブには、スナップショットディレクトリの登録方法が記されています。手動スナップショットの暗号化に関するオプションと、新しいドメインに移行した後にスナップショットを登録する際のオプションについては、関連するタブを参照してください。
サンプル Python クライアントの使用
Python クライアントは、単純なHTTPリクエストよりも自動化が簡単で、再利用性に優れています。この方法を使用してスナップショットリポジトリを登録する場合は、次のサンプル Python コードを register-repo.py
などの Python ファイルとして保存します。クライアントでは、AWS SDK for Python (Boto3)
サンプルコードで、次の変数を更新します: host
、region
、path
、および 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)