Amazon RDS MySQL から Amazon S3 にスナップショットをエクスポートしようとしていますが、エラーが表示されています。なぜこのようなことが起こるのですか?

最終更新日: 2021 年 8 月 18 日

Amazon Relational Database Service (Amazon RDS) MySQL インスタンスから Amazon Simple Storage Service (Amazon S3) バケットにスナップショットをエクスポートしようとしています。ただし、エラーが表示されるか、オプションが使用できません。このような問題が発生しているのはなぜですか? これを解決するにはどうすればよいですか?

簡単な説明

DB スナップショットの Amazon RDS から Amazon S3 へのエクスポートは、次の理由で失敗することがあります。

  • AWS Identity Access Management (IAM) ロールとポリシーの設定ミス
  • AWS KMS キーチェックの失敗
  • エクスポートタスクが [STARTING] (開始中) でスタックしている
  • アクセス拒否エラー
  • AWS KMS キー ID が存在しない
  • テーブルの許可に関する問題
  • IAM ロールが存在しない

解決方法

AWS Identity Access Management (IAM) ロールとポリシーの設定ミス

IAM ロールに Amazon RDS 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 ロールに次の 5 つのアクションに対する適切な許可が必要です。

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

次の 5 つのアクションを許可する IAM ポリシー (JSON 形式) の例を次に示します。

{
  "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 キーが無効になったり、削除された場合は、次のエラーが表示されます。

Error: KMS keys check failed. Please check the credentials on your KMS key and try again.

この問題を解決するには、スナップショットのエクスポートに使用する AWS KMS キー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 を使用している場合は、次のエラーが表示されます。

An error occurred (AccessDenied) when calling the StartExportTask operation: User: arn:aws:sts::1234567890:assumed-role/user/rds_lambda is not authorized to perform: rds:StartExportTask

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

以下はその例です。

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

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

An error occurred (AccessDenied) when calling the StartExportTask operation: User: arn:aws:sts::1234567890:assumed-role/user/rds_lambda is not authorized to perform: iam:PassRole on Resource ,iam role arn.

このエラーを解決するには、AWS のサービスにロールを渡すための許可をユーザーに付与してください。

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

AWS KMS キー ID が存在しない

IAM ロールが AWS KMS キーにアクセスするための権限を有していない場合、次のエラーが表示されます。

Error: Your request to export snapshot to S3 has failed. An internal error has occurred. Please try your query again at a later time OR The KMS key key_id doest not exist, is not enabled or you do not have permissions to access it.

このエラーを解決するには、KMS キーポリシーに次の KmsKeyID アクションを含めるようにしてください。

GrantOperation.Encrypt
GrantOperation.Decrypt
GrantOperation.GenerateDataKey
GrantOperation.GenerateDataKeyWithoutPlaintext
GrantOperation.ReEncryptFrom
GrantOperation.ReEncryptTo
GrantOperation.CreateGrant
GrantOperation.DescribeKey
GrantOperation.RetireGrant

以下はその例です。

{
  "Effect": "Allow",
  "Action": [
     “GrantOperation.Encrypt”,
  “GrantOperation.Decrypt”,
  “GrantOperation.GenerateDataKey”,
  “GrantOperation.GenerateDataKeyWithoutPlaintext”,
  “GrantOperation.ReEncryptFrom”,
  “GrantOperation.ReEncryptTo”,
  “GrantOperation.CreateGrant”,
  “GrantOperation.DescribeKey”,
  “GrantOperation.RetireGrant”
  ],
  "Resource": "arn:aws:iam::1234567890:role/role_name"
}

テーブルの許可に関する問題

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

Error: PERMISSIONS_DO_NOT_EXIST error stating that (n) tables were skipped

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

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

IAM ロールが存在しない

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

Error: The Principal export.rds.amazonaws.com isn't allowed to assume the IAM role arn:aws:iam::1234567890:role/iam_role or the IAM role arn:aws:iam::1234567890:role/iam_role doesn't exist.

この問題を解決するには、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": {}
  }
  ]
}

この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?