翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
手動スナップショットレポジトリの登録
手動インデックススナップショットを取得する前に、OpenSearch Service を用いてスナップショットレポジトリを登録する必要があります。この 1 回限りのオペレーションでは、「前提条件」で説明されているように、TheSnapshotRole
へのアクセスが許可された認証情報を用いて AWS リクエストに署名する必要があります。
ステップ 1: OpenSearch Dashboards でスナップショットロールをマッピングする (きめ細かなアクセスコントロールを使用している場合)
きめ細かなアクセスコントロールにより、リポジトリの登録時に追加のステップが導入されます。HTTP 基本認証を他のすべての目的で使用する場合でも、TheSnapshotRole
を渡すための iam:PassRole
許可を持っている IAM ロールまたはユーザーに manage_snapshots
ロールをマップする必要があります。
-
OpenSearch Service ドメインの OpenSearch Dashboards プラグインに移動します。OpenSearch Service コンソールのドメインダッシュボードに Dashboards エンドポイントがあります。
-
メインメニューから [セキュリティ]、[ロール] を選択し、[manage_snapshots] ロールを選択します。
-
[マッピングされたユーザー]、[マッピングの管理] を選択します。
-
TheSnapshotRole
を渡すための許可を持っているロールの ARN を追加します。[Backend roles] (バックエンドロール) の下にロール ARN を配置します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)