Amazon RDS for MySQL から Amazon S3 にスナップショットをエクスポートしようとすると、エラーが発生する理由を知りたいです。

所要時間3分
0

スナップショットを Amazon Relational Database Service (Amazon RDS) for MySQL インスタンスから Amazon Simple Storage Service (Amazon S3) バケットにエクスポートすると、エラーが発生したり、そのオプションを使用できなかったりします。

簡単な説明

Amazon RDS 用の Amazon S3 への DB スナップショットデータのエクスポートが失敗する原因を次に示します。

  • AWS Identity and Access Management (IAM) ロールとポリシーが正しく設定されていない
  • AWS Key Management Service (AWS KMS) キーのチェックが不合格となった
  • エクスポートタスクが "STARTING" で止まっている
  • Access Denied エラー
  • KMSKeyNotAccessibleFault
  • テーブルに対するアクセス許可の問題
  • IAM ロールが存在しない

解決策

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

IAM ロールとポリシーの設定ミス

IAM ロールに Amazon RDS for MySQL インスタンスから Amazon S3 にスナップショットをエクスポートするアクセス許可がない場合、次のエラーが表示されます。

"An error occurred (IamRoleMissingPermissions) when calling the StartExportTask operation: The IAM Role arn:aws:iam::1234567890:role/service-role/role_name isn't authorized to call s3:GetBucketLocation on the S3 bucket my_bucket_name" OR
"An error occurred (IamRoleMissingPermissions) when calling the StartExportTask operation: The IAM Role arn:aws:iam::1234567890:role/service-role/role_name isn't authorized to call s3:DeleteObject on the S3 bucket my_bucket_name" OR
"An error occurred (IamRoleMissingPermissions) when calling the StartExportTask operation: The IAM Role arn:aws:iam::1234567890:role/service-role/role_name isn't authorized to call s3:PutObject on the S3 bucket my_bucket_name" OR
"An error occurred (IamRoleMissingPermissions) when calling the StartExportTask operation: The IAM Role arn:aws:iam::1234567890:role/service-role/role_name isn't authorized to call s3:ListBucket on the S3 bucket my_bucket_name" OR
"An error occurred (IamRoleMissingPermissions) when calling the StartExportTask operation: The IAM Role arn:aws:iam::1234567890:role/service-role/role_name isn't authorized to call s3:GetObject on the S3 bucket my_bucket_name."

Amazon S3 にスナップショットをエクスポートするには、IAM ロールに次のアクションに対するアクセス許可が必要です。

  • s3:PutObject
  • s3:DeleteObject
  • s3:GetObject
  • s3:ListBucket
  • s3:GetBucketLocation

これらのアクションを許可する IAM ポリシーの例を次に示します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExportPolicy",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject*",
        "s3:ListBucket",
        "s3:GetObject*",
        "s3:DeleteObject*",
        "s3:GetBucketLocation"
      ],
      "Resource": [
        "arn:aws:s3:::s3_bucket_name",
        "arn:aws:s3:::s3_bucket_name/export/*"
      ]
    }
  ]
}

AWS KMS キーチェックが失敗した

スナップショットのエクスポート中に AWS KMS キーが無効化されたか削除された場合、次のエラーが表示されます。 "KMS キーチェックが失敗しました。KMS キーの認証情報を確認して、もう一度試してください。"

この問題を解決するには、スナップショットのエクスポートに使用する AWS KMS キーAWS KMS コンソールにあることを確認してください。AWS KMS キーのステータスは、"Enabled" と表示されている必要があります。

エクスポートタスクが "STARTING" ステータスで停止している

Amazon RDS for MySQL DB スナップショットを Amazon S3 にエクスポートするのにかかる時間は、データベースのサイズとタイプに左右されます。エクスポートタスクは、Amazon S3 にデータを抽出する前に、データベース全体を復元してスケールします。この段階では、エクスポートタスクには "STARTING" ステータスが表示されます。タスクが Amazon S3 にデータをエクスポートするときに、ステータスは "In progress" に変わります。エクスポートタスクが成功すると、ステータスはタスクが完了したことを示します。エクスポートタスクプロセスに問題がある場合、ステータスはタスクが失敗したことを示します。

IAM ロールで必要なアクセス許可が欠けており、Amazon API Gateway で AWS Lambda を使用している場合は、次のエラーが表示されます。

"StartExportTask 操作の呼び出し中にエラーが発生しました (AccessDenied): ユーザー arn:aws:sts::1234567890:assumed-role/user/rds_lambda は、rds:StartExportTask の実行を許可されていません"

この問題を解決するには、rds:StartExportTask への Write アクセスを許可します。StartExportTask アクションにアクセスできる必要があります。

"Effect": "Allow",
"Action": "rds:StartExportTask",
"Resource": "*"

IAM ロールに StartExportTask オペレーションを呼び出すアクセス許可がない場合は、次のエラーが表示されます。

"StartExportTask 操作の呼び出し中にエラーが発生しました (AccessDenied): ユーザー arn:aws:sts::1234567890:assumed-role/user/rds_lambda は、次のリソース、IAM ロール arn に対する iam:PassRole の実行を許可されていません。"

このエラーを解決するには、AWS サービスにロールを渡すためのアクセス許可をユーザーに付与します。

{
    "Effect": "Allow",
    "Action": [
      "iam:GetRole",
      "iam:PassRole"
    ],
    "Resource": "arn:aws:iam::1234567890:role/role_name"
}

KMSKeyNotAccessibleFault

スナップショットエクスポートメカニズムから AWS KMS キーまたは IAM ロールにアクセスできない場合、次のエラーが表示されます。

"StartExportTask 操作の呼び出し時にエラーが発生しました (KMSKeyNotAccessibleFault): 指定された KMS キー <key_id> が存在しないか、有効になっていないか、アクセスを許可されていません。"

Amazon RDS での KMSKeyNotAccessibleFault エラーを解決するには、「Amazon S3 バケットへのアクセスを設定する」を参照してください。

Amazon Aurora での KMSKeyNotAccessibleFault エラーを解決するには、「クロスアカウントの AWS KMS キーを使用する」を参照してください。

テーブルに対するアクセス許可の問題

Amazon RDS のテーブルにアクセスするためのアクセス許可がない場合は、次のエラーが表示されます。

"PERMISSIONS_DO_NOT_EXIST エラー。(n) 個のテーブルがスキップされました"

この問題を解決するには、PostgreSQL データベースに接続した後に次のコマンドを実行します。

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA schema_name TO superuser_name;

IAM ロールが存在しない

IAM ロールの信頼ポリシーで適切な信頼関係が指定されていない場合、次のエラーが表示されます。

"プリンシパル export.rds.amazonaws.com が IAM ロール arn:aws:iam::1234567890:role/iam_role の引き受けを許可されていないか、IAM ロール arn:aws:iam::1234567890:role/iam_role が存在しません。"

この問題を解決するには、次の例で示すように、IAM ポリシーで 信頼関係が "rds.amazonaws.com" ではなく "export.rds.amazonaws.com" を指定していることを確認してください。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "export.rds.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {}
    }
  ]
}
AWS公式
AWS公式更新しました 2ヶ月前
コメントはありません

関連するコンテンツ