Amazon Redshift をターゲットエンドポイントとして使用する AWS Database Migration Service (AWS DMS) タスクで発生する接続障害およびエラーをトラブルシューティングしたいと考えています。
簡単な説明
Amazon Redshift データベースを AWS DMS のターゲットとして使用するための前提条件を満たしていることを確認してください。前提条件が満たされていない場合、Amazon Redshift エンドポイントに接続できない可能性があります。
また、AWS DMS タスクのネットワーク構成が適切に設定されていない場合、接続テストが不合格となる可能性があります。エンドポイント接続に関するエラーのトラブルシューティング方法については、「AWS DMS エンドポイントへの接続に関する障害をトラブルシューティングする方法を教えてください」を参照してください。
解決策
"Role 'dms-access-for-endpoint' is not configured properly" エラーの解決
使用するエンドポイントの Amazon リソースネーム (ARN) に必須の AWS Identity and Access Management (IAM) ロールが作成、構成されていない場合、上記のエラーが発生します。
注: AWS DMS コンソールを使用する場合は、AWS DMS は必要な IAM ロールを自動的に作成します。AWS DMS API または AWS コマンドラインインターフェイス (AWS CLI) を使用する場合は、AWS DMS はロールを自動的に作成しません。
このエラーを解決するには、必要な dms-access-for-endpoint IAM ロールを作成し、正しく構成したことを確認します。
"Unable to create S3 bucket for Redshift.Bucket Name for endpoint ARN is in use" エラーの解決
Amazon マネージドポリシーが IAM ロール dms-access-for-endpoint に適切にアタッチされていない場合、下記のエラーが発生する可能性があります。
"Unable to create S3 bucket for Redshift.Bucket Name for endpoint ARN is in use."
次の原因でも、上記のエラーが発生する可能性があります。
- IAM ロール dms-access-for-endpoint のポリシーは、Amazon Simple Storage Service (Amazon S3) に明示的拒否を適用している。
- AWS DMS が自動で作成し、Amazon Redshift に関連付けた Amazon S3 バケットポリシーに対し、ユーザーが明示的制限が含まれる変更を行った。
このエラーを解決するには、デフォルトマネージドポリシー (AmazonDMSRedshiftS3Role) または同等のカスタムポリシーを IAM ロール dms-access-for-endpoint にアタッチします。次に、AWS DMS が関連付けたデフォルトの S3 バケットポリシーには、明示的な制限が含まれていないことを確認します。詳細については、「Amazon S3 バケットの設定」を参照してください。
Amazon Redshift エンドポイントにデータを移行する
Amazon Redshift のターゲットエンドポイントにデータを移行する際、AWS DMS はデフォルトの S3 バケットを中間タスクストレージとして使用します。次に、AWS DMS は移行されたデータを Amazon Redshift にコピーします。ターゲットの Amazon Redshift エンドポイントにテスト接続を行うと、dms-'Redshift endpoint ARN' という S3 バケットが自動的に作成されます。
この中間ストレージには、カスタム S3 バケットを選択できます。詳細については、「Amazon Redshift データベースを AWS DMS のターゲットとして使用する」を参照してください。
"Amazon S3; Status Code: 400; Error Code: TooManyBuckets" エラーの解決
AWS アカウントが Amazon S3 のクォータに達している場合、エンドポイントをテストすると、次の例に類似したエラーが発生します。
"Service: Amazon S3; Status Code: 400; Error Code: TooManyBuckets; Request ID: #######; S3 Extended Request ID: xxxxxxxxxxxxxx; Proxy: null"
このエラーを解決するには、使用中でないバケットをアカウントから削除してから、エンドポイントを再度テストします。
"<NoSuchBucket> The specified bucket does not exist" エラーの解決
タスクの移行中に AWS DMS が作成した S3 バケットを削除した場合、タスクログに次のエラーが表示されます。
"<NoSuchBucket> The specified bucket does not exist."
このエラーを解決するには、Amazon Redshift エンドポイントへの接続をテストしてから、タスクを再始動または再開します。エンドポイントをカスタムバケットとして使用する構成を行った場合は、タスクを再始動する前に、Amazon S3 で利用可能であることを確認します。