Amazon S3 ターゲットのデータ検証 - AWS データベース移行サービス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon S3 ターゲットのデータ検証

AWS DMS は、Amazon S3 ターゲットでレプリケートされたデータの検証をサポートしています。AWS DMS はレプリケートしたデータを Amazon S3 にフラットファイルとして保存するため、データを検証するには Amazon Athena CREATE TABLE AS SELECT (CTAS) クエリを使用します。

Amazon S3 に保存されているデータに対するクエリは、多大なコンピューティングが必要となるため、AWS DMS は、変更データキャプチャ (CDC) 中の Amazon S3 データの検証は、1 日 1 回のみ、UTC の午前 0 時 (00:00) に実行します。AWS DMS が毎日実行する検証は、間隔検証と呼ばれます。間隔検証中、AWS DMS は過去 24 時間にターゲットの Amazon S3 バケットに移行されたすべての変更レコードを検証します。間隔検証の制限の詳細については、「ターゲットの S3 の検証を使用する場合の制限」を参照してください。

Amazon S3 のターゲット検証では Amazon Athena を使用するため、追加料金が適用されます。詳細については、Amazon Athena 料金 を参照してください。

注記

S3 ターゲットの検証には、AWS DMS バージョン 3.5.0 以降が必要です。

S3 ターゲット検証の前提条件

S3 ターゲット検証を使用する前に、次の設定とアクセス許可を確認します。

  • エンドポイントの S3SettingsDataFormat 値を parquet に設定します。詳細については、「S3 の parquet 設定」を参照してください。

  • 移行タスクの作成に使用するユーザーアカウントに割り当てられたロールに、適切なアクセス許可のセットが付与されていることを確認します。次の「アクセス許可」を参照してください。

継続的なレプリケーション (CDC) を使用するタスクの場合は、次の設定を確認します。

ターゲットの S3 の検証を使用するためのアクセス許可

ターゲットの S3 の検証を使用するためのアクセス許可を設定するには、移行タスクの作成に使用するユーザーアカウントに割り当てられたロールに、次のとおりのアクセス許可のセットが付与されていることを確認します。サンプル値は実際の値に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "athena:StartQueryExecution", "athena:GetQueryExecution", "athena:CreateWorkGroup" ], "Resource": "arn:aws:athena:<endpoint_region_code>:<account_id>:workgroup/dms_validation_workgroup_for_task_*" }, { "Effect": "Allow", "Action": [ "glue:CreateDatabase", "glue:DeleteDatabase", "glue:GetDatabase", "glue:GetTables", "glue:CreateTable", "glue:DeleteTable", "glue:GetTable" ], "Resource": [ "arn:aws:glue:<endpoint_region_code>:<account_id>:catalog", "arn:aws:glue:<endpoint_region_code>:<account_id>:database/aws_dms_s3_validation_*", "arn:aws:glue:<endpoint_region_code>:<account_id>:table/aws_dms_s3_validation_*/*", "arn:aws:glue:<endpoint_region_code>:<account_id>:userDefinedFunction/aws_dms_s3_validation_*/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucketMultipartUploads", "s3:AbortMultipartUpload", "s3:ListMultipartUploadParts" ], "Resource": [ "arn:aws:s3:::<bucket_name>", "arn:aws:s3:::<bucket_name>/*" ] } ] }

ターゲットの S3 の検証を使用する場合の制限

ターゲットの S3 の検証を使用する場合に適用される追加の制限は、次のとおりです。すべての検証に適用される制限については、「制限事項」を参照してください。

  • DatePartitionSequence 値には Day コンポーネントが必要です。ターゲットの S3 の検証は、YYYYMM 形式をサポートしていません。

  • CDC 中に間隔検証を実行すると、awsdms_validation_failures_v1 テーブルに誤った検証エラーが表示されることがあります。このようなエラーは、AWS DMS が間隔検証中に取得した変更を翌日のパーティションフォルダに移行するために発生します。このような変更は通常、当日のパーティションフォルダに書き込まれます。このような誤ったエラーは、動的ソースデータベースから Amazon S3 などの静的ターゲットへのレプリケーションの検証の制限です。このような誤ったエラーを調べるには、検証期間の終わり (UTC 00:00) 付近のレコードを確認します。エラーは通常、この時間帯に表示されます。

    誤ったエラーの数を最小限に抑えるには、タスクの CDCLatencySource が低く設定されていることを確認します。レイテンシーのモニタリングの詳細については、「レプリケーションタスクのメトリクス」を参照してください。

  • failed または stopped の状態のタスクは前日の変更を検証しません。予期しない障害による検証エラーを最小限に抑えるには、テーブルマッピング、ソースエンドポイント、ターゲットエンドポイントに同じ検証のみのタスクを個別に作成します。データ検証の詳細については、「S3 ターゲット検証での検証のみのタスクの使用」を参照してください。

  • テーブル統計の [検証ステータス] 列には、最新の間隔検証の状態が反映されます。そのため、不一致のあるテーブルが翌日の間隔検証後に検証済みとして表示される可能性があります。ターゲットの Amazon S3 バケット内の s3_validation_failures folder フォルダを調べて、1 日以上前に発生した不一致がないかを確認します。

  • S3 検証では、Amazon Athena のバケット化されたテーブル機能を使用します。これにより、S3 検証でターゲットテーブルデータのバケット化されたコピーを作成できます。つまり、テーブルデータのコピーは、DMS 検証の内部パーティショニングに一致するサブセットに分割されます。Athena のバケット化されたテーブルには、100,000 個のバケットという制限があります。この制限を超えることを S3 検証が検証しようとするテーブルは、検証に失敗します。S3 検証が作成を試みるバケットの数は、次のようになります。

    (#records in the table) / (validation partition size setting)

    この制限を回避するには、S3 検証によって作成されたバケットの数が 100,000 未満になるように、検証パーティションサイズ設定を増やします。バケット化の詳細については、「Amazon Athena ユーザーガイド」の「Athena でのパーティション化とバケット化Amazon Athena」を参照してください。

S3 ターゲット検証での検証のみのタスクの使用

検証のみのタスクでは、移行は実行せず、移行されるデータの検証を実行します。

検証のみのタスクでは、移行タスクが停止しても引き続き検証が実行されるため、AWS DMS は 00:00 UTC 間隔の検証期間を見逃すことがありません。

Amazon S3 ターゲットエンドポイントで検証のみのタスクを使用する場合、次の制限があります。

  • 検証のみの設定が有効になっているフルロードタスクの Amazon S3 検証はサポートされています。ただし、その他のエンドポイントのフルロードタスクや検証のみのタスクとは動作が異なります。S3 をターゲットとして使用する場合、このようなタイプのタスクは S3 ターゲットのフルロードデータのみを検証し、CDC 移行の一環として移行されたデータは検証されません。この機能は、フルロードのみのタスクが作成したデータを検証する場合にのみ使用します。アクティブな CDC タスクが実行されているターゲットでこのモードを使用してデータを検証しても、効果的な検証は行われません。

  • 検証のみのタスクは、最後の間隔検証期間 (UTC 00:00) 以降の変更のみを検証します。検証のみのタスクでは、前日のフルロードデータや CDC データは検証されません。