ターゲットエンドポイントとして Amazon Redshift を使用する AWS DMS タスクの接続失敗とエラーをトラブルシューティングする方法を教えてください。

最終更新日: 2022 年 1 月 21 日

ターゲットエンドポイントとして Amazon Redshift を使用する AWS Database Migration Service (AWS DMS) タスクの接続失敗とエラーをトラブルシューティングする方法を教えてください。

簡単な説明

Amazon Redshift エンドポイントへの接続をテストするときに、AWS Database Migration Service のターゲットとして Amazon Redshift データベースを使用するための前提条件を満たしていない場合、テストが失敗する可能性があります。これは、必要な AWS Identity and Access Management (IAM) ロールを作成および設定していない場合、またはエンドポイント ARN の Amazon Simple Storage Service (Amazon S3) バケット名を使用している場合に発生する可能性があります。必要な IAM ロールは、AWS DMS コンソールを使用すると自動的に作成されますが、AWS DMS API または AWS Command Line Interface (AWS CLI) を使用した場合は作成されません。

AWS DMS タスクのネットワーク設定に問題がある場合、接続テストも失敗する可能性があります。エンドポイント接続エラーのトラブルシューティングについては、AWS DMS エンドポイント接続エラーのトラブルシューティング方法を参照してください。

必要な IAM ロールが正しく作成および設定されていない場合、次のようなエラーが表示されることがあります。

Role 'dms-access-for-endpoint' is not configured properly

解決方法

注: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください

ロール「dms-access-for-endpoint」が正しく設定されていないというエラーを解決する

このエラーを解決するには、dms-access-for-endpoint IAM ロールが正しく作成され、設定されていることを確認します。このロールの設定については、「AWS CLI および AWS DMS API で使用する IAM ロールの作成」を参照してください。

Amazon 管理ポリシーが正しく設定されていない場合、次のようなエラーが表示されることがあります。

Unable to create S3 bucket for Redshift. Bucket Name for endpoint ARN is in use.

このエラーは次の場合に発生します。

  1. Amazon 管理ポリシー (AmazonDMSRedshiftS3Role または同様のカスタムポリシー) は、dms-access-for-endpoint IAM ロールにアタッチされていません。
  2. dms-access-for-endpoint IAM ロールポリシーには、Simple Storage Service (Amazon S3) に対する明示的な拒否があります。
  3. AWS DMS が自動的に作成し、Amazon Redshift エンドポイントに関連付けられた事前設定済みの Simple Storage Service (Amazon S3) バケットポリシーは、明示的な制限付きで変更されています。

このエラーを解決するには、デフォルトの管理ポリシー (AmazonDMSRedshiftS3Role) または同様のカスタムポリシーを dms-access-for-endpoint IAM ロールにアタッチします。次に、AWS DMS によって関連付けられたデフォルトの Simple Storage Service (Amazon S3) バケットポリシーが変更されていないことを確認します。詳細については、Simple Storage Service (Amazon S3) バケット設定を参照してください。

Amazon Redshift エンドポイントにデータを移行する

Amazon Redshift ターゲットエンドポイントにデータを移行する場合、DMS は中間タスクストレージとしてデフォルトの Simple Storage Service (Amazon S3) バケットを使用します。その後、移行したデータを Amazon Redshift にコピーします。ターゲットの Amazon Redshift エンドポイントに対してテスト接続を実行すると、次の命名規則で S3 バケットが自動的に作成されます。

dms-'Redshift endpoint ARN'

この中間ストレージにはカスタム S3 バケットを選択できます。詳細については、Amazon Redshift データベースを AWS Database Migration Service のターゲットとして使用するを参照してください。

Simple Storage Service (Amazon S3) の解決; ステータスコード: 400、エラーコード: TooManyBucket エラー

アカウントが Simple Storage Service (Amazon S3) の制限に達した場合、エンドポイントのテスト時に次のようなエラーが表示されることがあります。

  • サービス: Simple Storage Service (Amazon S3); ステータスコード: 400; エラーコード: TooManyBuckets; リクエスト ID: xxxxxxxxxxx; S3 Extended Request ID: xxxxxxxxxxxx; プロキシ:null

このエラーを解決するには、アカウントから未使用のバケットを削除し、エンドポイントをもう一度テストします。

<NoSuchBucket>「指定されたバケットは存在しません」というエラーを解決します。

タスクの移行中に AWS DMS によって作成された Simple Storage Service (Amazon S3) バケットを削除すると、タスクログに次のようなエラーが表示されることがあります。

  • <NoSuchBucket> 指定されたバケットは存在しません。

この問題を解決するには、Amazon Redshift エンドポイントの接続をテストし、タスクを再起動または再開します。DMS エンドポイントをカスタムバケットとして使用するように設定した場合は、タスクを再び開始する前に、そのエンドポイントが Simple Storage Service (Amazon S3) で使用可能であることを確認してください。


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


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