Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
OpenSearch Service クラスター内の手動スナップショットに関するエラーの解決方法を教えてください。
Amazon OpenSearch Service クラスターの手動スナップショットを復元し、リポジトリの登録またはアクセスを試みた際、エラーが発生します。
解決策
OpenSearch Service バージョンに応じた移行プロセスを適切に完了しなかった場合、エラーが発生します。この問題をトラブルシューティングするには、発生したエラーに応じて解決策を実施します。
403 Unauthorized エラー
OpenSearch Service ドメインで 詳細アクセス制御 (FGAC) を有効にした場合、スナップショットを取得する際に、次の例に類似したエラーメッセージが表示される可能性があります。
"type: security_exception,
reason: no permissions for [cluster:admin/repository/put] and User [name=arn:aws:iam::012345678912:user/username, backend_roles=[], requestedTenant=null]
status: 403"
上記のエラーは、正しい認証情報を入力しなかった場合に発生します。
この問題を解決するには、手動スナップショットの取得時に次の curl コマンドを実行し、username:password パラメータを指定します。
curl -XPUT -u 'username:password' 'opensearch-domain-endpoint/_snapshot/snapshot-repository-name/snapshot-name'
注: OpenSearch Service ドメインで FGAC を有効にするには、スーパーユーザー権限が必要です。スーパーユーザーのユーザー名とパスワードを使用しても、AWS Identity and Access Management (IAM) ロールをスーパーユーザーとして設定してもかまいません。クラスタースナップショットにアクセスする際に、スーパーユーザーの認証情報または IAM ロールを指定します。IAM ロールを指定する場合、その IAM ロールは AWS Signature Version 4 を使用して HTTP リクエストに署名する必要があります。FGAC および IAM ロールの詳細については、「OpenSearch Service ドメインの作成と管理」を参照してください。
また、IAM ロールには manage_snapshots ロールをマッピングし、スナップショットリポジトリを登録する必要があります。IAM ロールを引き受けるには、manage_snapshots ロールに IAM:PassRole 権限が必要です。詳細については、「前提条件」を参照してください。
illegal_state_exception
Amazon Simple Storage Service (Amazon S3) バケットを使用して複数のドメインのスナップショットを手動で取得した場合、次の例に類似したエラーメッセージが表示されます。
"type: illegal_state_exception
reason: Can't get text on a FIELD_NAME at 1:1838
status: 500"
上記のエラーを解決するには、新しい Amazon S3 バケットを作成して手動スナップショットを取得するか、既存のバケットからすべてのデータをクリアします。
Repository_missing_exception
手動でインデックスのスナップショットを取得する前に、OpenSearch Service に手動スナップショットリポジトリを登録する必要があります。また、手動スナップショットの前提条件を満たす必要があります。
スナップショットリポジトリが未登録であるか、リポジトリ名に誤りがある場合や、前提条件を満たしていない場合、次のエラーメッセージが表示されます。
"type: repository_missing_exception
reason: [snapshot-repository-name] missing
status: 404"
Concurrent_snapshot_execution_exception
別のスナップショットが進行中の場合にスナップショットの取得を試みると、次のエラーメッセージが表示されます。
type: concurrent_snapshot_execution_exception
reason: [snapshot-repository-name:snapshot-name] a snapshot is already running"
別のスナップショットが進行中かどうかを確認するには、次の curl コマンドを実行します。
curl -XGET 'opensearch-domain-endpoint/_snapshot/_status'
進行中のスナップショットが存在する場合は、現在のスナップショットが完了するまで待機してください。スナップショットの進行が止まっている場合は、毎時スナップショットの履歴を確認してください。詳細については、「インデックスを削除できないか、OpenSearch Service クラスターをアップグレードできない原因を教えてください」を参照してください。
Snapshot_restore_exception
オンプレミスクラスターから OpenSearch Service ドメインにデータを移行した場合、次のエラーメッセージが表示される可能性があります。
type: snapshot_restore_exception
reason: [manual-snapshot-repo:my-manual-snapshot1/HPOcIJryTj6a6GJvyP79bw] the snapshot was created with Elasticsearch version [6.8.0] which is higher than the version of this node [6.7.0]
status: 500"
上記のエラーは、OpenSearch Service とは異なるバージョンの Amazon Elasticsearch で実行されている既存のクラスターのスナップショットを取得した場合に発生します。この問題を解決するには、Elasticsearch のバージョンをアップグレードするか、remote reindex API 操作を使用してインデックスを移行します。
ドメインの FGAC が有効な場合に、スナップショットからインデックスを復元しようとすると、次のエラーメッセージが表示される可能性があります。
"type: security_exception
reason: no permissions for [] and User [name=username, backend_roles=[], requestedTenant=]
status: 403"
上記のエラーを解決するには、次の curl コマンドを実行してセキュリティインデックスを除外します。
curl -XPOST -u 'username:password' "https://opensearch-domain-endpoint/_snapshot/snapshot-repository/snapshot-id/_restore" -H 'Content-Type: application/json' -d' { "indices": "-.opensearch*,-.opendistro*,-.kibana*" }'
注: 上記のコマンドでは、例の値を実際の値で置き換えてください。
a_w_s_security_token_service_exception
手動スナップショットに関連付けられた IAM ロールが es.amazonaws.com の信頼関係を確立していない場合、次のエラーメッセージが表示されます。
"type: repository_exception
reason: [es_01082021_repo] Could not determine repository generation from root blobs
type: i_o_exception
reason: Exception when listing blobs by prefix [index-]
type: a_w_s_security_token_service_exception
reason: a_w_s_security_token_service_exception: User: arn:aws:sts::332315457451:assumed-role/cp-sts-grant-role/swift-us-west-2-prod-679203657591 is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::679203657591:role/ES_Backup_Role (Service: AWSSecurityTokenService; Status Code: 403; Error Code: AccessDenied; Request ID: 36d09b93-d94f-457e-8fa5-b0a50ba436c3)
status: 500"
この問題を解決するには、スナップショットリポジトリを登録する際、手動スナップショットに関連付けられた IAM ロールを指定する必要があります。IAM ロールがない場合は、作成してください。
さらに、IAM ロールの信頼関係が、Principal ステートメントで OpenSearch Service を指定していることも確認してください。
信頼関係の例:
{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": "sts:AssumeRole" }] }
スナップショットが PARTIAL ステータスである場合
次の原因でスナップショットが PARTIAL ステータスになります。
- クラスターに使用できないプライマリシャードが存在する
- 赤色のクラスターステータス
- ノードのクラッシュ
スナップショットのステータスが PARTIAL の場合、OpenSearch Service により、シャードのデータは保存されていません。部分的なスナップショットからデータを復元することは可能ですが、欠落しているインデックスを復元するには、過去のスナップショットを使用する必要があります。クラスターのステータスが PARTIAL かどうかを確認するには、スナップショットの履歴を参照します。
Amazon S3 Glacier ストレージクラスの問題
復元されたスナップショットを何らかの Amazon S3 Glacier ストレージクラスに保存する場合、バケットには Amazon S3 Glacier Lifecycle ルールを適用しないでください。手動スナップショットでは、S3 Glacier ストレージクラスはサポートされていません。S3 Glacier Lifecycle ポリシーをバケットに適用する場合は、バケットに移行したオブジェクトを標準ストレージクラスに戻してください。
オブジェクトを元に戻すと、スナップショットからオブジェクトを復元できます。詳細については、「前提条件」を参照してください。
関連情報
Amazon OpenSearch Service で発生する エラーの解決方法を教えてください"cannot restore index [.kibana]"
