AWS DMS タスクが成功しても、Amazon S3 ソースエンドポイントからデータが移行されないのはなぜですか?

最終更新日: 2020 年 9 月 4 日

AWS Database Migration Service (AWS DMS) タスクが成功しましたが、Amazon Simple Storage Service (Amazon S3) ソースエンドポイントからデータが移行されません。データが移行されないのはなぜですか? そして、この問題のトラブルシューティング方法を教えてください。

簡単な説明

次に、AWS DMS タスクは成功したものの、データが移行されない最も一般的な理由を示します。

  1. タスクのステータスが「Load complete, replication ongoing」となっていても、ターゲットにデータがロードされていない。
  2. タスクのステータスが「Load complete, replication ongoing」となっていても、[Table statistics] (テーブル統計) セクションにテーブルが見つからない。
  3. タスクのステータスが「Running」となりターゲットエンドポイントにテーブルが作成されているものの、データがロードされない。加えて、レプリケーションログに「No response body」エラーが記述されている。

解決方法

1.タスクのステータスは 「Load complete, replication ongoing」だが、ターゲットにデータがロードされていない。

ソースエンドポイントに定義された Amazon S3 パスが正しいことを確認します。レプリケーションログで、ログエントリを確認します。AWS DMS が、ソースエンドポイントに定義されている Amazon S3 パス内のデータファイルを見つけることができないことを示すエントリを特定します。次のレプリケーションログエントリの例を参照してください。

[SOURCE_UNLOAD ]I: Unload finished for table 'dms_schema'.'dms_table' (Id = 1). 0 rows sent. (streamcomponent.c:3396)
[TARGET_LOAD ]I: Load finished for table 'dms_schema'.'dms_table' (Id = 1). 0 rows received. 0 rows skipped. Volume transferred 0. (streamcomponent.c:3667)

Amazon S3 では、フルロードフェーズのデータファイル (data.csv) と進行中の変更のためのデータファイル (change_data.csv) は次のように格納されます。

  • S3-bucket/dms-folder/sub-folder/dms_schema/dms_table/data.csv
  • S3-bucket/dms-folder/sub-folder/dms-cdc-path/dms-cdc-sub-path/change_data.csv

Amazon S3 ソースエンドポイントがデータファイルを検索するには、次の 3 つの重要なフィールドがあります。

  • バケットフォルダ
  • データキャプチャ (CDC) パスの変更
  • テーブル構造

前述のファイルパスの例では、dms-folder/sub-folderBucket folder です。 Amazon S3 ソースエンドポイントの作成時に入力する CDC パスは、dms-cdc-path/dms-cdc-sub-path です。次の例では、テーブル構造 として、前出と同じサンプルファイルのパスを使用します。

{
  "TableCount": 1,
  "Tables": [
    {
      "TableColumns": […],
      "TableColumnsTotal": "1",
      "TableName": "dms_table",
      "TableOwner": "dms_schema",
      "TablePath": "dms_schema/dms_table/"
    }
  ]
}

重要: テーブル構造 の TablePath には、バケットフォルダパス (dms-folder/sub-folder) を含めないでください。

エンドポイント設定を指定する際は、以下の点を考慮します。

  • バケットフォルダはオプションです。バケットフォルダが指定されている場合、CDC パスとテーブルパス (フルロードの場合は TablePath フィールド) は Amazon S3 の同じフォルダ内にある必要があります。バケットフォルダを指定しない場合、TablePathCDC パスは S3 バケットのすぐ下に置かれます。 
  • Amazon S3 ソースエンドポイントの [Bucket folder] (バケットフォルダ) フィールドには、S3 バケット名とテーブル構造のスキーマ名の間の任意のフォルダディレクトリを指定できます。上記の例では、dms-schema です。S3 バケットの下にフォルダの階層がない場合は、フィールドを空白のままにしておくことができます。
  • バケットフォルダまたは CDC パスは、独立したフォルダーとして記述することも、dms-folderdms-folder/sub-folder といったサブフォルダを含めて記述することもできます。

DMS タスク設定でソースエンドポイントとして Amazon S3 を使用している場合は、スキーマとテーブルをテーブルマッピングに含める必要があります。これは、データをターゲットに正常に移行するために必要です。詳細については、Amazon S3 のソースデータ型を参照してください。

タスクの表準備モードとして Drop tables on target を使用すると、DMS によってターゲット表 dms_schema.dms_table が作成されます。次の例を参照してください。

CREATE TABLE 'dms_schema'.'dms_table' (…);

注意: Amazon S3 のフォルダ名およびオブジェクト名では、大文字と小文字が区別されます。S3 エンドポイントでは、大文字と小文字が正しい状態で、フォルダ名とオブジェクト名の両方を指定してください。

2.タスクのステータスは 「Load complete, replication ongoing」ですが、[Table statistics] セクションにテーブルがありません。

[Drop tables on target] が使用されたときに、ターゲットエンドポイントにテーブル が作成されていないことがあります。これは、Amazon S3 ソースエンドポイントに指定されているテーブル構造が原因である可能性があることを意味します。

前に説明したように、ソースエンドポイントの Amazon S3 パスが正しいことを確認します。次に、データ型が Amazon S3 エンドポイントでサポートされていることを確認します。

Amazon S3 パスが正しいこと、およびデータ型がサポートされていることを確認したら、DMS タスクのテーブルマッピングで定義されているフィルターを確認します。フィルターがテーブルの欠落の原因であるかどうかを確認します。タスクテーブルマッピング内で必要なテーブルを確認し、テーブルが Amazon S3 ソースエンドポイントのテーブル構造で定義されているかどうかを確認します。

3.タスクのステータスは「Running」で、テーブルはターゲットに作成されますが、データはロードされません。

AWS DMS が Amazon S3 パスからコンテンツを取得できない場合は、レプリケーションログにエラーがあります。次の例を参照してください。
[SOURCE_CAPTURE ]E: No response body. Response code: 403 [1001730] (transfer_client.cpp:589)
[SOURCE_CAPTURE ]E: failed to download file </dms-folder/sub-folder/dms_schema/dms_table/data.csv> from bucket <dms-test> as </rdsdbdata/data/tasks/NKMBA237MEB4UFSRDF5ZAF3EZQ/bucketFolder/dms-folder/sub-folder/dms_schema/dms_table/data.csv>,
                status = 4 (FAILED) [1001730] (transfer_client.cpp:592)

このエラーは、Amazon S3 ソースエンドポイントの AWS Identity and Access Management (IAM) ロールに正しいアクセス許可 (s3:GetObject) がない場合に発生します。このエラーを解決するには、エラーメッセージにある Amazon S3 パスにデータファイルが存在することを確認します。次に、IAM ユーザーに s3:GetObject のアクセス許可があることを確認します。


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


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