AWS DMS の使用時に Amazon S3 エンドポイントの接続テスト障害をトラブルシューティングする方法を教えてください。

最終更新日: 2022 年 2 月 2 日

AWS Database Migration Service (AWS DMS) タスクのソースエンドポイントまたはターゲットエンドポイントとして Amazon Simple Storage Service (Amazon S3) を使用しています。エンドポイントの接続テストに失敗したため、エラーメッセージが表示されました。エンドポイントの接続障害をトラブルシューティングする方法を教えてください。

簡単な説明

Amazon S3 エンドポイントを使用している AWS Identity and Access Management (IAM) ロールに適切なアクセス許可が設定されている必要があります。適切な許可がない場合は、次のいずれかのエントリが表示されます:

メッセージ:

  • エンドポイントのテストに失敗: アプリケーションステータス: 1020912、アプリケーションメッセージ: S3 エンドポイントへの接続に失敗しました。アクセスが拒否されました。
  • エンドポイントのテストに失敗: アプリケーションステータス: 1020912、アプリケーションメッセージ: バケット wan-dms のリストに失敗しました。データベースへの接続に失敗しました。アプリケーション詳細メッセージ: バケット wan-dms の表示に失敗しました。AWS バケットの表示に失敗しました。表示バケットが例外で失敗しました。「AccessDenied」、メッセージ「アクセスが拒否されました」、エラータイプ「15」。AWS でバケットのリストを取得できませんでした。再試行不可能なエラー: アクセスが拒否されました
  • エンドポイントのテストに失敗: アプリケーションステータス: 1020912、アプリケーションメッセージ: データベースへの接続に失敗しました。
  • エラーの詳細: [message=putDatabase 呼び出しに失敗しました、errType=ERROR_RESPONSE、status=1020414、errMessage= データベースへの接続に失敗しました、errDetails=]

解決方法

注意:Amazon S3 を AWS DMS のソースまたはターゲットとして使用する場合は、以下の記事を必ず確認してください。

これらのエラーを解決するには、Amazon S3 エンドポイントにアクセスするために必要な最小限の IAM アクセス許可を付与します。Amazon S3 のソースエンドポイントとターゲットエンドポイントには、AWS DMS の異なる最小アクセス許可があります。

Amazon S3 ソースエンドポイントの次の IAM ポリシー例を参照します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::awsexamplebucket",
        "arn:aws:s3:::awsexamplebucket/*"
      ]
    }
  ]
}

注意: awsexamplebucket を自分のバケット名に置き換えます。

ターゲットエンドポイントとしての Amazon S3 の次の IAM ポリシー例を参照します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:DeleteObject",
        "s3:PutObjectTagging"
      ],
      "Resource": [
        "arn:aws:s3:::awsexamplebucket/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::awsexamplebucket"
      ]
    }
  ]
}

注意: awsexamplebucket を自分のバケット名に置き換えます。

重要:

アクセス許可エラーのトラブルシューティングを行うには、次の手順を実行します:

1    IAM ロールに、Amazon S3 エンドポイントへのアクセスに必要な最小限のアクセス許可があることを確認します。

2    Amazon S3 エンドポイントに指定されたバケット名が IAM ロールで許可されているリソースと一致することを確認します。たとえば、IAM ロールでは、前のサンプルポリシーの awsexamplebucket など、1 つのバケットへのアクセスのみが許可されます。ただし、Amazon S3 エンドポイントのバケット名awsexamplebucket2 が指定されている場合、テスト接続は失敗します。

3   dms.amazonaws.com が、IAM ロールに関連付けられた信頼できるエンティティであることを確認します。詳細については、「既存ロールの信頼関係の編集」および AWS DMS の次の信頼ポリシーの例を参照します:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "dms.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

4    AWS Organizations を使用する場合、使用する IAM ロールが Amazon S3 へのアクセスを許可する組織の一部であることを確認します。組織がアクセスを許可しない場合、AWS DMS は、その IAM ロールを使用して Amazon S3 エンドポイントに接続できません (ロールに必要なすべてのアクセス許可を持っていても同じです)。組織がアクセスを許可していない場合は、アカウント管理者に問い合わせて、組織への Amazon S3 アクセスを許可するよう依頼してください。