

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Amazon S3 目標資料驗證
<a name="CHAP_Validating_S3"></a>

AWS DMS 支援驗證 Amazon S3 目標中的複寫資料。由於 會將複寫的資料 AWS DMS 儲存為 Amazon S3 中的一般檔案，因此我們會使用 [ Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) `CREATE TABLE AS SELECT`(CTAS) 查詢來驗證資料。

Amazon S3 中儲存之資料上的查詢需要大量運算。因此，在變更資料擷取 (CDC) 期間對 Amazon S3 資料 AWS DMS 執行驗證，每天只會在 UTC 午夜 (00：00) 執行一次。每個 AWS DMS 執行的每日驗證稱為*間隔驗證*。在間隔驗證期間， 會 AWS DMS 驗證過去 24 小時內遷移至目標 Amazon S3 儲存貯體的所有變更記錄。如需間隔驗證限制的詳細資訊，請參閱[使用 S3 目標驗證的限制](#CHAP_Validating_S3_limitations)。

Amazon S3 目標驗證使用 Amazon Athena，因此需支付額外費用。如需詳細資訊，請參閱 [Amazon Athena 定價](https://aws.amazon.com/athena/pricing/)。

**注意**  
S3 目標驗證需要 3.5.0 AWS DMS 版或更新版本。

**Topics**
+ [先決條件](#CHAP_Validating_S3_prerequisites)
+ [許可](#CHAP_Validating_S3_permissions)
+ [限制](#CHAP_Validating_S3_limitations)
+ [僅驗證任務](#CHAP_Validating_S3_only)

## S3 目標驗證先決條件
<a name="CHAP_Validating_S3_prerequisites"></a>

在使用 S3 目標驗證之前，請檢查下列設定和許可：
+ 將端點 [S3Settings](https://docs.aws.amazon.com/dms/latest/APIReference/API_S3Settings.html) 的 `DataFormat` 值設為 `parquet`。如需詳細資訊，請參閱[S3 的 Parquet 設置](CHAP_Target.S3.md#CHAP_Target.S3.EndpointSettings.Parquet)。
+ 對於用來建立遷移任務的使用者帳戶，請確定指派給此帳戶的角色具有正確的許可集。請參閱以下[許可](#CHAP_Validating_S3_permissions)。

對於使用進行中複寫 (CDC) 的任務，請檢查下列設定：
+ 開啟補充記錄，讓您在 CDC 資料中擁有完整的記錄。如需開啟補充記錄的相關資訊，請參閱本指南中[疑難排解和診斷支援針對延時進行疑難排解](CHAP_Troubleshooting.md)一節中的[自動將補充記錄新增至 Oracle 來源端點](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Oracle.AutoSupplLogging)。
+ 設定目標端點的 `TimestampColumnName` 參數。時間戳記的資料欄名稱沒有限制。如需詳細資訊，請參閱 [S3Settings](https://docs.aws.amazon.com/dms/latest/APIReference/API_S3Settings.html)。
+ 為目標設定以日期為基礎的資料夾分割。如需詳細資訊，請參閱[使用日期型資料夾分割](CHAP_Target.S3.md#CHAP_Target.S3.DatePartitioning)。

## 使用 S3 目標驗證的許可
<a name="CHAP_Validating_S3_permissions"></a>

若要為使用 S3 目標驗證設定存取，對於用來建立遷移任務的使用者帳戶，請確定指派給此帳戶的角色具有以下許可集。使用您自己的值來取代範例值。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "athena:StartQueryExecution",
                "athena:GetQueryExecution",
                "athena:CreateWorkGroup"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "glue:CreateDatabase",
                "glue:DeleteDatabase",
                "glue:GetDatabase",
                "glue:GetTables",
                "glue:CreateTable",
                "glue:DeleteTable",
                "glue:GetTable"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetObject",
                "s3:ListBucketMultipartUploads",
                "s3:AbortMultipartUpload",
                "s3:ListMultipartUploadParts"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## 使用 S3 目標驗證的限制
<a name="CHAP_Validating_S3_limitations"></a>

檢視使用 S3 目標驗證時適用的下列其他限制。如需了解適用於所有驗證的限制，請參閱[限制](CHAP_Validating.md#CHAP_Validating.Limitations)。
+ `DatePartitionSequence` 值需要「天」元件。S3 目標驗證不支援該 `YYYYMM` 格式。
+ 當間隔驗證在 CDC 期間執行時，您可能會在 `awsdms_validation_failures_v1` 資料表中看到錯誤的驗證錯誤。發生這些錯誤是因為 會將間隔驗證期間抵達的變更 AWS DMS 遷移到次日的分割區資料夾。通常會將這些變更寫入當天的分割區資料夾中。這些錯誤是驗證從動態來源資料庫複寫到靜態目標 (例如 Amazon S3) 的限制。若要調查這些錯誤，請檢查接近驗證時段 (00:00 UTC) 結束的記錄，也就是通常會出現這些錯誤的時間。

  若要將錯誤的數目降到最低，請確定任務的 `CDCLatencySource` 數量很少。如需監控延時的相關資訊，請參閱[複寫任務指標](CHAP_Monitoring.md#CHAP_Monitoring.Metrics.Task)。
+ `failed` 或 `stopped` 狀態中的任務不會驗證前一天的變更。若要盡量減少因未預期失敗而導致的驗證錯誤，請建立僅具有相同資料表對應、以及來源和目標端點的個別僅驗證任務。如需僅驗證任務的詳細資訊，請參閱[使用僅驗證任務搭配 S3 目標驗證](#CHAP_Validating_S3_only)。
+ 資料表統計資料中的**驗證狀態**資料欄會反映最近一次間隔驗證的狀態。因此，具有不相符項目的資料表可能會在次日的間隔驗證後顯示為已驗證。檢查目標 Amazon S3 儲存貯體中的 `s3_validation_failures folder` 是否有超過一天前發生的不相符項目。
+ S3 驗證使用 Amazon Athena 的儲存貯體資料表功能。這可讓 S3 驗證建立目標資料表資料的儲存貯體副本。這表示資料表資料的複本會分為符合 DMS 驗證內部分割的子集。Athena 儲存貯體資料表的限制為 100，000 個儲存貯體。S3 驗證嘗試驗證超過此限制的任何資料表都會驗證失敗。S3 驗證嘗試建立的儲存貯體數目等於下列項目：

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

  若要解決此限制，請增加驗證分割區大小設定，讓 S3 驗證建立的儲存貯體數量小於 100，000。如需儲存貯體的詳細資訊，請參閱《*Amazon Athena * [ Athena 使用者指南》中的 Athena 中的分割和儲存貯](https://docs.aws.amazon.com/athena/latest/ug/ctas-partitioning-and-bucketing.html)體。
+ 資料表名稱不得包含特殊字元，底線除外。

  S3 驗證使用不支援資料表名稱中特殊字元 （底線除外） 的 Amazon Athena。如需詳細資訊，請參閱《*Amazon Athena 使用者指南*》中的 [CREATE TABLE](https://docs.aws.amazon.com/athena/latest/ug/create-table.html) 主題。
+ 當 AWS DMS 資料驗證功能與 AWS Lake Formation 管理的 Amazon S3 目標搭配使用時，驗證程序會失敗。這可能會導致資料一致性問題。

## 使用僅驗證任務搭配 S3 目標驗證
<a name="CHAP_Validating_S3_only"></a>

*僅驗證任務*會對要遷移的資料執行驗證，而不執行遷移。

即使遷移任務停止，僅驗證任務仍會繼續執行，這可確保 AWS DMS 不會錯過 00：00 UTC 間隔驗證時段。

使用僅驗證任務搭配 Amazon S3 目標端點時有下列限制：
+ 支援啟用僅驗證設定的完全載入任務的 Amazon S3 驗證，但運作方式與其他端點的僅完全載入和驗證任務不同。對於將 S3 作為目標，此類型的任務只會根據 S3 目標中的完全載入資料進行驗證，而不會驗證任何在 CDC 遷移過程中遷移的資料。僅使用此功能來驗證僅限完全載入任務所建立的資料。使用此模式來驗證目標中的資料不會產生有效的驗證 (該目標中有執行的作用中 CDC 任務)。
+ 僅驗證任務只會驗證自上次間隔驗證時段 (UTC 00:00) 以來的變更。僅驗證任務不會驗證前幾天的完全載入資料或 CDC 資料。