翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
手動インデックススナップショットを取得する前に、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] (スナップショット) のタブには、スナップショットディレクトリの登録方法が記されています。手動スナップショットの暗号化に関するオプションと、新しいドメインに移行した後にスナップショットを登録する際のオプションについては、関連するタブを参照してください。
スナップショットリポジトリを登録するには、OpenSearch Service ドメインエンドポイントに PUT リクエストを送信します。curl
リクエストは以下のような形式です。
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 Service ドメインにアクセスできるかを確認するには、ウェブブラウザで https://
を開き、デフォルトの JSON 応答を受信していることを確認します。your-vpc-domain
.region
.es.amazonaws.com
Amazon S3 バケットが OpenSearch ドメインとは異なる別の AWS リージョン にある場合は、リクエストにパラメータ "endpoint": "s3.amazonaws.com"
を追加します。
サンプル 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)