S3 から ElastiCache クラスターを復元しようとするときに発生する「作成失敗」や「アクセス許可が拒否されました」エラーのトラブルシューティング方法を教えてください。

所要時間2分
0

Amazon Simple Storage Service (Amazon S3) から Amazon ElastiCache クラスターを復元しようとするときに発生する「作成失敗」や「アクセス許可が拒否されました」エラーを解決したいと考えています。

簡単な説明

Amazon S3 からの ElastiCache バックアップの復元が失敗する一般的な理由は次のとおりです。

  • バックアップの制約の範囲外でバックアップの復元を試みた。
  • ElastiCache が Amazon S3 からファイルを取得できなかった。
  • ElastiCache バックアップファイルが別の AWS リージョンの Amazon S3 バケットに格納されている。
  • 複数のデータベースを含む rdb ファイルを、クラスターモードがオンになっている ElastiCache クラスターに復元している。

解決策

バックアップの制約の範囲外でバックアップの復元を試みた

ElastiCache for Redis のバックアップを復元するときは、バックアップの制約について必ず理解しておいてください。

  • クラスターモードがオンになっている Redis クラスターを使用したバックアップから、クラスターモードがオフの Redis クラスターに復元することはできません。
  • クラスターモードがオンになっている ElastiCache クラスターからバックアップを復元する場合、 ElastiCache コンソールでクラスターモードを無効にすることはできません。使用できるのは、クラスターモードを有効にするオプションのみです。
  • クラスターモードがオンになっている ElastiCache クラスターのバックアップを Amazon S3 にエクスポートすると、複数の rdb ファイルが作成されます。1 つのバックアップ rdb ファイルで Amazon S3 からのバックアップをシードした場合は、1 つのシャードのキークラスターのみがシードされます。ワイルドカード***rdb** ファイルを使用してこの問題を回避しようとすると、次のエラーが表示されます。
    「Error: Object or bucket does not exist for S3 object: examplebucket/cluster-mode-enabled-*.rdb.」
  • データ階層化を使用するクラスターからバックアップを復元することはできません。例えば、データ階層化を使用しないクラスターに r6gd ノードを復元することはできません。
  • データ階層化バックアップを Amazon S3 にエクスポートすることはできません。また、Amazon S3 から ElastiCache データ階層化バックアップを復元することもできません。詳細については、「Limitations」を参照してください。
  • 複数のデータベースを含む rdb ファイルの場合、Redis (クラスターモードがオフ) クラスターから Redis (クラスターモードがオン) クラスターに復元することはできません。これを実行しようとすると、次のエラーが表示されます。
    「Error: To restore a snapshot in cluster mode, all keys in the RDB file should reside in DB 0.」

ElastiCache が Amazon S3 からファイルを取得できなかった

Amazon S3 バケットに保存されている ElastiCache バックアップにアクセスするために必要な権限が ElastiCache にない場合は、次のエラーが表示されます。

「Restore from snapshot failed for node group 0001 in replication group test.Failed to retrieve file from S3.」

権限の問題を確認するには、ElastiCache のイベントを確認します。エラーの原因を特定したら、リージョンが次のいずれかであることを確認してください。

オプトインのリージョンの場合、ElastiCache が Amazon S3 からバックアップファイルを取得することを許可するバケットポリシー が必要です。
Amazon S3 バケットが次のいずれかのリージョンにある場合は、ElastiCache サービスに S3 のバックアップファイルへのアクセスを許可する必要があります。

**注:**中国 (北京)、中国 (寧夏)、AWS GovCloud (米国西部) のリージョンの正規の ID は、デフォルトの AWS リージョンとは異なります。

  • 中国 (北京) と中国 (寧夏) - b14d6a125bdf69854ed8ef2e71d8a20b7c490f252229b806e514966e490b8d83
  • AWS GovCloud (米国西部) - 40fa568277ad703bd160f66ae4f83fc9dfdfd06c2f1b5060ca22442ac3ef8be6
  • AWS のデフォルトリージョン - 540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353

正規の ID またはバケットポリシーを使用して ElastiCache に rdb バックアップオブジェクトへのアクセス権を付与する場合は、 Redis クラスターを復元します。

ElastiCache バックアップファイルが別の AWS リージョンの Amazon S3 バケットに格納されている

別のリージョンの Amazon S3 バケットにある ElastiCache バックアップを復元しようとすると、次のエラーが表示されます。

「Permission denied to access S3 object.Please use the S3 object in the same region.」

このエラーを解決するには、次の手順を実行してください:

**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

  1. 次のコマンドを使用して、Amazon S3 バケットから rdb バックアップファイルをコピーします。バケットに Redis クラスターが復元されるリージョンのバックアップが含まれていることを確認してください。詳細については、「ElastiCache for Redis クラスターを移行する場合のベストプラクティスはどのようなものですか?」を参照してください。

    **注:**example-source-bucketexample-destination-bucketexample-backupexample-source-regionexample destination-region は適切な名前に置き換えてください。

    aws s3 cp s3://example-source-bucket/example-backup.rdb s3://example-destination-bucket/example-backup.rdb --acl bucket-owner-full-control --source-region example-source-region --region example-destination-region
  2. rdb バックアップファイルに正しい権限 (正規 ID またはバケットポリシー) が割り当てられていることを確認します。

  3. クラスターの復元を続行します。

複数のデータベースを含む rdb ファイルを、クラスターモードがオンになっている ElastiCache クラスターに復元します。

複数のデータベースを含む rdb ファイルを、クラスターモードがオンになっている ElastiCache クラスターに復元すると、次のエラーが表示されます。

「Restore from snapshot failed for node group 0001 in replication group test.To restore a snapshot in cluster mode, all keys in the RDB file should reside in DB 0.Snapshot ID: arn:aws:s3:::example-bucket/multidb.rdb」

復元失敗の原因を確認するには、ElastiCache のイベントを確認します。

このエラーを解決するには、次の手順を実行してください:

  1. すべてのキーが 1 つのデータベースに移行されていることを確認してください。詳細については、Redis ウェブサイトの「MIGRATE 」を参照してください。
    **注:**ソースデータベースが ElastiCache Redis にある場合、移行コマンドはサポートされません。この問題を回避するには、RIOT などの他の Redis ツールを使用してください。詳細については、Redis ウェブサイトの「riot」を参照してください。
  2. Redis データベースのローカルバックアップを作成します。
  3. バックアップを Amazon S3 にアップロードします。
  4. ElastiCache (クラスターモードがオン) クラスターへの復元を続行します。
AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ