

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

# 快照保留最佳化
<a name="snapshot-retention-management"></a>

Apache Iceberg 快照保留功能可讓使用者在特定時間點查詢歷史資料，並將不需要的修改還原至其資料表。在 AWS Glue 資料目錄中，快照保留組態會控制這些快照 （資料表資料的版本） 在過期和移除之前保留多久。根據設定的保留期間或要保留的快照數目上限，自動移除較舊的快照，這有助於管理儲存成本和中繼資料負荷。

您可以設定以天為單位的保留期間，以及要為資料表保留的快照數目上限。從資料表中繼資料 AWS Glue 中移除比指定保留期間更舊的快照，同時將最新的快照保持在設定的限制內。從中繼資料移除舊快照後， 會 AWS Glue 刪除不再參考且對過期快照是唯一的對應資料和中繼資料檔案。這只允許剩餘保留快照的時間歷程查詢，同時回收過期快照資料使用的儲存空間。

**Topics**
+ [啟用快照保留最佳化工具](enable-snapshot-retention.md)
+ [更新快照保留最佳化工具](update-snapshot-retention.md)
+ [停用快照保留最佳化工具](disable-snapshot-retention.md)

# 啟用快照保留最佳化工具
<a name="enable-snapshot-retention"></a>

 您可以使用 AWS Glue 主控台 AWS CLI或 AWS API，為 Data Catalog 中的 Apache Iceberg 資料表啟用快照保留最佳化工具。針對新的資料表，您可以選擇 Apache Iceberg 作為資料表格式，並在您建立資料表時啟用快照保留最佳化工具。新資料表的快照保留預設為停用。

------
#### [ Console ]

**啟用快照保留最佳化工具**

1.  在 https：//[https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/) 開啟 AWS Glue 主控台，並以資料湖管理員、資料表建立者或已在資料表上授予 `glue:UpdateTable`和 `lakeformation:GetDataAccess`許可的使用者身分登入。

1. 在導覽面板的 **Data Catalog** 下方，選擇**資料表**。

1. 在**資料表**頁面上，選擇要啟用快照保留最佳化工具的 Iceberg 資料表，然後在**動作**功能表下，選擇**最佳化**下的**啟用**。

   您也可以透過選取資料表並開啟**資料表詳細資訊**頁面，來啟用最佳化。選擇頁面下半部分的**資料表最佳化**索引標籤，然後選擇**啟用快照保留**。

1. 在**啟用最佳化**頁面的**最佳化組態**下，您具有兩個選項：**使用預設設定**或**自訂設定**。如果您選擇使用預設設定， AWS Glue 會使用 Iceberg 資料表組態中定義的屬性來決定快照保留期間和要保留的快照數目。如果沒有此組態， 會 AWS Glue 保留一個快照五天，並刪除與過期快照相關聯的檔案。

1.  接著，選擇 AWS Glue 可代表您擔任的 IAM 角色，以執行最佳化工具。如需 IAM 角色所需許可的詳細資訊，請參閱[資料表最佳化先決條件](optimization-prerequisites.md)一節。

   請依照以下步驟更新現有 IAM 角色：

   1.  若要更新 IAM 角色的權限政策，請在 IAM 主控台中，前往用於執行壓縮程序的 IAM 角色。

   1.  在新增許可區段中，選擇「建立政策」。在新開啟的瀏覽器視窗中，建立要搭配您角色使用的新政策。

   1. 在建立政策頁面上，選擇 JSON 標籤。將「先決條件」中顯示的 JSON 程式碼複製到政策編輯器欄位中。

1. 如果您要手動設定**快照保留組態**的值，請選擇**自訂設定**。  
![\[使用「啟用保留」>「自訂設定」選項的 Apache Iceberg 資料表詳細資訊頁面。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/table-enable-retention.png)

1. 選擇方塊 **將選取的 IAM 角色套用至選取的最佳化工具**選項，以對所有啟用的最佳化工具使用單一 IAM 角色。

1. 如果您有安全政策組態，其中 Iceberg 資料表最佳化工具需要從特定虛擬私有雲端 (VPC) 存取 Amazon S3 儲存貯體，請建立 AWS Glue 網路連線或使用現有的網路連線。

   如果您尚未設定 AWS Glue VPC 連線，請依照使用 AWS Glue 主控台或 AWS CLI/SDK [建立連接器連線](https://docs.aws.amazon.com/glue/latest/dg/creating-connections.html)區段中的步驟建立新的連線。

1. 接下來，在**快照保留組態**下，選擇使用 [Iceberg 資料表組態](https://iceberg.apache.org/docs/1.5.2/configuration/#table-behavior-properties)中指定的值，或指定快照保留期間的自訂值 (history.expire.max-snapshot-age-ms)、要保留的快照數目下限 (history.expire.min-snapshots-to-keep)，以及連續快照刪除任務執行之間的小時數。

1.  在資料表最佳化工具從資料表中繼資料中刪除舊快照時，選擇**刪除關聯的檔案**以刪除基礎檔案。

    如果您未選擇此選項，從資料表中繼資料中移除較舊的快照時，關聯的檔案會保留在儲存體中作為孤立檔案。

1. 接著，閱讀注意聲明，然後選擇**我確認**以繼續。
**注意**  
 在 Data Catalog 中，快照保留最佳化工具會遵守由分支和標籤層級保留政策控制的生命週期。如需詳細資訊，請參閱 Iceberg 文件中的[分支和標記](https://iceberg.apache.org/docs/latest/branching/#overview)一節。

1. 檢閱組態，然後選擇**啟用最佳化**。

   等待幾分鐘，讓保留最佳化工具執行，並根據組態使舊快照過期。

------
#### [ AWS CLI ]

 若要在 中啟用新 Iceberg 資料表的快照保留 AWS Glue，您需要建立 類型的資料表最佳化工具，`retention`並將 `true`中的 `enabled` 欄位設定為 `table-optimizer-configuration`。您可以使用 AWS CLI 命令`create-table-optimizer`或 來執行此操作`update-table-optimizer`。此外，您需要根據您的要求指定保留組態欄位，例如 `snapshotRetentionPeriodInDays` 和 `numberOfSnapshotsToRetain`。

下列範例示範如何啟用快照保留最佳化工具。將帳戶 ID 取代為有效的 AWS 帳戶 ID。將資料庫名稱和資料表名稱取代為實際的 Iceberg 資料表名稱和資料庫名稱。將 取代`roleArn`為 IAM 角色 AWS 的資源名稱 (ARN)，以及具有執行快照保留最佳化工具所需許可的 IAM 角色名稱。

```
aws glue create-table-optimizer \
  --catalog-id 123456789012 \
  --database-name iceberg_db \
  --table-name iceberg_table \
  --table-optimizer-configuration '{"roleArn":"arn:aws:iam::123456789012:role/optimizer_role","enabled":'true', "vpcConfiguration":{
"glueConnectionName":"glue_connection_name"}, "retentionConfiguration":{"icebergConfiguration":{"snapshotRetentionPeriodInDays":7,"numberOfSnapshotsToRetain":3,"cleanExpiredFiles":'true'}}}'\
  --type retention
```

 此命令會為指定目錄、資料庫和區域中指定的 Iceberg 資料表建立保留最佳化工具。table-optimizer-configuration 指定要使用的 IAM 角色 ARN、啟用最佳化工具，以及設定保留組態。在此範例中，其會保留快照 7 天，至少保留 3 個快照，並清除過期檔案。
+  snapshotRetentionPeriodInDays – 快照過期前保留的天數。預設值為 `5`。
+ numberOfSnapshotsToRetain – 要保留的快照數目下限，即使其早於保留期間。預設值為 `1`。
+ cleanExpiredFiles – 布林值，指出是否要在快照過期後刪除過期的資料檔案。預設值為 `true`。

   設定為 true 時，較舊的快照會從資料表中繼資料中移除，而基礎檔案會刪除。如果將此參數設定為 false，較舊的快照會從資料表中繼資料中移除，但基礎檔案會保留在儲存體中作為孤立檔案。

------
#### [ AWS API ]

呼叫 [CreateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-CreateTableOptimizer) 操作以啟用資料表的快照保留最佳化工具。

------

啟用壓縮功能後，**資料表最佳化**索引標籤會顯示下列壓縮詳細資料 (大約 15-20 分鐘後)：

開始時間  
快照保留最佳化工具啟動的時間。該值為以 UTC 時間為單位的時間戳記。

執行時間  
時間顯示最佳化工具完成任務所需的時間。該值為以 UTC 時間為單位的時間戳記。

狀態  
最佳化工具執行的狀態。值會是 success 或 fail。

刪除的資料檔案數  
刪除的檔案總數。

刪除的資訊清單檔案數  
刪除的資訊清單檔案總數。

刪除的資訊清單數  
刪除的資訊清單總數。

# 更新快照保留最佳化工具
<a name="update-snapshot-retention"></a>

 您可以使用 AWS Glue 主控台 AWS CLI或 UpdateTableOptimizer API，更新特定 Apache Iceberg 資料表快照保留最佳化工具的現有組態。

------
#### [ Console ]

**更新快照保留組態**

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/) 開啟 AWS Glue 主控台。

1. 選擇 **Data Catalog**，然後選擇**資料表**。從資料表清單中，選擇您要更新快照保留最佳化工具組態的 Iceberg 資料表。

1. 在**資料表詳細資訊**頁面的下部，選取**資料表最佳化**索引標籤，然後選擇**編輯**。也可以從頁面右上角的**動作**功能表中選擇**最佳化**下的**編輯**。

1.  在**編輯最佳化**頁面中，進行所需的變更。

1.  選擇**儲存**。

------
#### [ AWS CLI ]

 若要使用 更新快照保留最佳化工具 AWS CLI，您可以使用下列命令：

```
aws glue update-table-optimizer \
 --catalog-id 123456789012 \
 --database-name iceberg_db \
 --table-name iceberg_table \
 --table-optimizer-configuration '{"roleArn":"arn:aws:iam::123456789012:role/optimizer_role"","enabled":'true', "vpcConfiguration":{"glueConnectionName":"glue_connection_name"},"retentionConfiguration":{"icebergConfiguration":{"snapshotRetentionPeriodInDays":7,"numberOfSnapshotsToRetain":3,"cleanExpiredFiles":'true'}}}' \
 --type retention
```

 此命令會更新指定目錄、資料庫和區域中指定資料表的保留組態。關鍵參數為：
+  snapshotRetentionPeriodInDays – 快照過期前保留的天數。預設值為 `1`。
+ numberOfSnapshotsToRetain – 要保留的快照數目下限，即使其早於保留期間。預設值為 `5`。
+ cleanExpiredFiles – 布林值，指出是否要在快照過期後刪除過期的資料檔案。預設值為 `true`。

   設定為 true 時，較舊的快照會從資料表中繼資料中移除，並且會刪除其基礎檔案。如果將此參數設定為 false，較舊的快照會從資料表中繼資料中移除，但基礎檔案會保留在儲存體中作為孤立檔案。

------
#### [ API ]

若要更新資料表最佳化工具，可以使用 `UpdateTableOptimizer` API。此 API 可讓您更新現有資料表最佳化工具的組態，以進行壓縮、保留或孤立檔案移除。請求參數包括：
+ catalogId (必要)：包含資料表的目錄 ID 
+  databaseName (選用)：包含資料表的資料庫名稱 
+  tableName (選用)：資料表的名稱 
+  type (必要)：資料表最佳化工具的類型 (壓縮、保留或孤立檔案刪除) 
+  retentionConfiguration (必要)：資料表最佳化工具的更新組態，包括角色 ARN、啟用狀態、保留組態和孤立檔案移除組態。

------

# 停用快照保留最佳化工具
<a name="disable-snapshot-retention"></a>

 您可以使用 AWS Glue 主控台 或 停用特定 Apache Iceberg 資料表的快照保留最佳化工具 AWS CLI。

------
#### [ Console ]

**停用快照保留**

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/) 開啟 AWS Glue 主控台。

1. 選擇 **Data Catalog**，然後選擇**資料表**。從資料表清單中，選擇要停用最佳化工具以保留快照的 Iceberg 資料表。

1. 在**資料表詳細資訊**頁面的下半部分中，選擇**動作**下的**資料表最佳化**和**停用****快照保留**。

   您還可以從頁面右上角的**動作**功能表中選擇**最佳化**下的**停用**。

1.  在確認訊息中，選擇**停用**。您可以稍後重新啟用快照保留最佳化工具。

    在確認後，快照保留最佳化工具會停用，且快照保留的狀態會回復為 `Not enabled`。

------
#### [ AWS CLI ]

在下列範例中，將帳戶 ID 取代為有效的 AWS 帳戶 ID。將資料庫名稱和資料表名稱取代為實際的 Iceberg 資料表名稱和資料庫名稱。將 取代`roleArn`為 IAM 角色 AWS 的資源名稱 (ARN)，以及具有執行保留最佳化工具所需許可的 IAM 角色實際名稱。

```
aws glue update-table-optimizer \
  --catalog-id 123456789012 \
  --database-name iceberg_db \
  --table-name iceberg_table \
  --table-optimizer-configuration '{"roleArn":"arn:aws:iam::123456789012:role/optimizer_role", "vpcConfiguration":{"glueConnectionName":"glue_connection_name"}, "enabled":'false'}'\ 
  --type retention
```

------
#### [ AWS API ]

呼叫 [UpdateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-UpdateTableOptimizer) 操作，以停用特定資料表的快照保留最佳化工具。

------