Aurora PostgreSQL 互換 DB クラスターのスナップショット復元の問題をトラブルシューティングする方法を教えてください。
Amazon Aurora PostgreSQL 互換エディションデータベース (DB) クラスターのスナップショットから復元するときに発生するスナップショット復元エラーをトラブルシューティングしたいと考えています。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI のエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
スナップショット復元エラーのトラブルシューティングを行う前に、スナップショットがターゲット設定と互換性があること、および必要なアクセス許可があることを確認してください。
復元前にスナップショットの互換性を確認する
スナップショットを復元する前に、エラーを防ぐためにバージョンの互換性を確認してください。
スナップショットのステータスとエンジンのバージョンを確認する
スナップショットを復元する前に、コンソールまたは AWS CLI を使用してバージョンの互換性を確認できます。
コンソールを使用する場合は、次の手順を実行します。
- Amazon Relational Database Service (Amazon RDS) コンソールを開きます。
- [スナップショット] を選択します。
- 対象のスナップショットを選択します。
- [詳細] タブを選択し、次の設定を確認します。<br id=hardline_break/> Engine パラメータが aurora-postgresql であることを確認します。<br id=hardline_break/> エンジンのバージョンが、ターゲットのバージョンと互換性があることを確認します。<br id=hardline_break/> [ステータス] が Available に設定されていることを確認します。
AWS CLI を使用して利用可能な Aurora PostgreSQL 互換バージョンをすべて一覧表示するには、次の describe-db-engine-versions コマンドを実行します。
aws rds describe-db-engine-versions \ --engine aurora-postgresql \ --query "DBEngineVersions[?EngineVersion=='your-snapshot-version'].ValidUpgradeTarget[*].EngineVersion" \ --region your-region
注: your-snapshot-version をスナップショットのエンジンバージョンに、your-region を AWS リージョンに置き換えてください。
IAM アクセス許可を確認する
AWS Identity and Access Management (IAM) のユーザーまたはロールに、スナップショットを復元するために必要なアクセス許可があることを確認してください。
現在のアクセス許可を確認するには、次の get-user AWS CLI コマンドを実行します。
aws iam get-user --region your-region
注: your-region を実際の AWS リージョンに置き換えてください。
IAM ポリシーの例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds:RestoreDBClusterFromSnapshot", "rds:CreateDBInstance", "rds:DescribeDBSnapshots", "rds:DescribeDBClusters", "rds:DescribeDBInstances" ], "Resource": "*" } ] }
IAM アクセス許可に関する問題を解決する
必要な Amazon RDS アクセス許可がない場合、次のエラーメッセージが表示されます。
"User is not authorized to perform: rds:RestoreDBClusterFromSnapshot"
このエラーを解決するには、必要な Amazon RDS アクセス許可を IAM ポリシーに追加します。次の手順を実行します。
-
IAM コンソールを開きます。
-
ナビゲーションペインで [ユーザー] または [ロール] を選択します。
-
対象のユーザー名またはロール名を選択します。
-
[アクセス許可を追加] を選択します。
-
[インラインポリシーを作成] を選択するか、IAM エンティティにすでにアタッチされているポリシーを編集します。
-
[JSON] タブを選択します。
-
スナップショットの復元に必要なアクセス許可を含むポリシーを入力します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds:RestoreDBClusterFromSnapshot", "rds:CreateDBInstance", "rds:DescribeDBSnapshots", "rds:DescribeDBClusterSnapshots", "rds:DescribeDBClusters", "rds:DescribeDBInstances" ], "Resource": "*" } ] } -
[次へ] をクリックします。
-
ポリシー名を入力します。例えば、RDSSnapshotRestorePolicy と入力します。
-
[ポリシーを作成] を選択します。
AWS KMS 暗号化のアクセス許可エラーを解決する
適切な AWS Key Management Service (AWS KMS) のアクセス許可なしで暗号化されたスナップショットを復元しようとすると、次のいずれかのエラーメッセージが表示されます。
"Unable to restore from encrypted snapshot"
"KMS key access denied error"
このエラーを解決するには、スナップショットが使用する AWS KMS キーを確認し、必要な AWS KMS アクセス許可を IAM ポリシーに追加します。
スナップショットが使用する AWS KMS キーを確認するには、次の describe-db-cluster-snapshots コマンドを実行します。
aws rds describe-db-cluster-snapshots \ --db-cluster-snapshot-identifier your-snapshot-id \ --region your-region
注: your-snapshot-id をスナップショット識別子に、your-region を AWS リージョンに置き換えてください。
次に、AWS KMS のアクセス許可を IAM ポリシーに追加します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:CreateGrant", "kms:DescribeKey", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:region:account-id:key/key-id" } ] }
注: region を AWS リージョンに、account-id を AWS アカウント ID に、key-id を AWS KMS キー ID に置き換えてください。
スナップショットが見つからないエラーを解決する
存在しないスナップショットやアクセスできないスナップショットから復元しようとすると、次のエラーメッセージが表示されます。
"DBClusterSnapshotNotFoundFault: DBClusterSnapshot snapshot-id not found"
このエラーを解決するには、スナップショットが存在し、アクセス許可があることを確認してください。
アカウントで利用可能なスナップショットを一覧表示するには、次の describe-db-cluster-snapshots コマンドを実行します。
aws rds describe-db-cluster-snapshots \ --region your-region
注: your-region を実際の AWS リージョンに置き換えてください。
スナップショットが別の AWS アカウントから共有されている場合は、そのスナップショットがご使用のアカウントと共有されていること、および共有を承認していることを確認してください。
無効なパラメータエラーを解決する
復元中に互換性のないインスタンスクラスを指定すると、次のエラーメッセージが表示されます。
"InvalidParameterValue: Invalid DB Instance class"
このエラーを解決するには、Aurora PostgreSQL 互換エディションと互換性のあるインスタンスクラスを選択してください。
ターゲットのエンジンバージョンで有効なインスタンスクラスを一覧表示するには、次の describe-orderable-db-instance-options コマンドを実行します。
aws rds describe-orderable-db-instance-options \ --engine aurora-postgresql \ --engine-version your-version \ --region your-region
注: your-version を対象の PostgreSQL のバージョン (15.4 など) に置き換えてください。your-region を、対象の AWS リージョンに置き換えます。
出力を確認し、ターゲットのエンジンバージョンと必要な機能をサポートするインスタンスクラスを選択してください。
サブネットグループのエラーを解決する
復元中に無効なサブネットを指定すると、次のエラーメッセージが表示されます。
"InvalidSubnet: The requested subnet is not valid"
このエラーを解決するには、DB サブネットグループに複数のアベイラビリティーゾーンのサブネットがあることを確認します。
サブネットグループの設定を確認するには、次の describe-db-subnet-groups コマンドを実行します。
aws rds describe-db-subnet-groups \ --db-subnet-group-name your-subnet-group \ --region your-region
注: your-subnet-group を DB サブネットグループ名に、your-region を AWS リージョンに置き換えてください。
サブネットグループにアベイラビリティーゾーンのサブネットが 2 つ以上含まれていることを確認します。サブネットグループのサブネットが複数のアベイラビリティーゾーンにない場合は、サブネットグループを変更して別のアベイラビリティーゾーンにサブネットを追加できます。
クロスアカウントの AWS KMS キーアクセスエラーを解決する
適切な AWS KMS のアクセス許可なしに、別の AWS アカウントから共有された暗号化済みスナップショットを復元しようとすると、次のエラーメッセージが表示されます。
"AccessDenied: Cross-account pass role is not allowed"
このエラーを解決するには、AWS KMS キーポリシーでクロスアカウントアクセスが許可されていることと、IAM ロールに必要なアクセス許可があることを確認してください。
AWS KMS キーポリシーを確認するには、次の get-key-policy コマンドを実行します。
aws kms get-key-policy \ --key-id your-key-id \ --policy-name default \ --region your-region
注: your-key-id を AWS KMS キー ID に、your-region を AWS リージョンに置き換えてください。
キーポリシーに、復号と許可の作成を行うためのアクセス許可を AWS アカウントに付与するステートメントが含まれていることを確認します。AWS KMS キーポリシーを更新できない場合は、スナップショットの所有者に連絡して AWS KMS キーポリシーを更新してください。
クロスアカウントで暗号化されたスナップショットの場合、共有されたスナップショットから直接復元することはできません。代わりに、独自の AWS KMS キーを使用して共有スナップショットをご使用のアカウントにコピーし、コピーから復元してください。詳細については、「暗号化されたスナップショットの共有」を参照してください。
エンジンバージョンの互換性の問題を解決する
互換性のないエンジンバージョンに復元しようとすると、復元処理中にエラーが発生することがあります。
解決するには、ターゲットのバージョンがスナップショットの PostgreSQL バージョンと同じかそれ以上であることを確認してください。それより低いバージョンには復元できません。
利用可能な Aurora PostgreSQL 互換バージョンを確認するには、次の describe-db-engine-versions コマンドを実行します。
aws rds describe-db-engine-versions \ --engine aurora-postgresql \ --region your-region
注: your-region を実際の AWS リージョンに置き換えてください。
出力を確認して、復元ターゲットと互換性のあるエンジンバージョンを確認してください。
インスタンスクラスの互換性の問題を解決する
ターゲットエンジンのバージョンや必要な機能をサポートしていないインスタンスクラスを選択すると、復元が失敗する可能性があります。
この問題を解決するには、ワークロードに必要なストレージとメモリを備えたインスタンスクラスを選択してください。インスタンスクラスが、復元する Aurora PostgreSQL 互換バージョンをサポートしていること、Performance Insights など特定の機能をサポートしていることを確認します。
インスタンスクラスの互換性を確認するには、describe-orderable-db-instance-options コマンドを実行します。
aws rds describe-orderable-db-instance-options \ --engine aurora-postgresql \ --engine-version your-version \ --region your-region
注: your-version を対象の PostgreSQL のバージョン (15.4 など) に置き換えてください。your-region を、対象の AWS リージョンに置き換えます。
