スナップショット保持オプティマイザーの有効化
AWS Glue コンソール、AWS CLI、または AWS API を使用して、データカタログ内の Apache Iceberg テーブルのスナップショット保持オプティマイザーを有効にすることができます。新しいテーブルの場合は、テーブル形式として Apache Iceberg を選択し、テーブルの作成時にスナップショット保持オプティマイザーを有効にすることができます。新しいテーブルでは、スナップショットの保持はデフォルトで無効になっています。
- Console
-
スナップショット保持オプティマイザーを有効にするには
-
https://console.aws.amazon.com/glue/ で AWS Glue コンソールを開き、データレイク管理者、テーブル作成者、またはテーブルに対する glue:UpdateTable
および lakeformation:GetDataAccess
の許可を付与されたユーザーとしてサインインします。
-
ナビゲーションペインの [データカタログ] で [テーブル] を選択します。
[テーブル] ページで、スナップショット保持オプティマイザーを有効にする Iceberg テーブルを選択してから、[アクション] メニューで、[最適化] の [有効化] を選択します。
テーブルを選択して [テーブルの詳細] ページを開いて、最適化を有効にすることもできます。ページの下部にある [テーブル最適化] タブを選択し、[スナップショットの保持を有効にする] を選択します。
-
[最適化を有効にする] ページの [最適化設定] には、[デフォルト設定の使用] と [設定のカスタマイズ] の 2 つのオプションがあります。デフォルト設定を使用する場合、AWS Glue は Iceberg テーブル設定で定義されたプロパティを使用して、スナップショットの保持期間と保持するスナップショットの数を決定します。この設定がない場合、AWS Glue は 1 つのスナップショットを 5 日間保持し、期限切れのスナップショットに関連付けられたファイルを削除します。
-
次に、オプティマイザーを実行するためにお客様に代わって AWS Glue が引き受けることのできる IAM ロールを選択します。IAM ロールに必要なアクセス許可の詳細については、「 テーブル最適化の前提条件 」セクションを参照してください。
以下の手順に従って、既存の IAM ロールを更新します。
-
IAM ロールの許可ポリシーを更新するには、IAM コンソールで、圧縮の実行に使用されている IAM ロールにアクセスします。
-
[アクセス許可の追加] セクションで、[ポリシーの作成] を選択します。新しく開いたブラウザウィンドウで、ロールで使用する新しいポリシーを作成します。
[Create policy] (ポリシーの作成) ページで、[JSON] タブを選択します。前提条件に示している JSON コードをポリシーエディタフィールドにコピーします。
-
[スナップショット保持設定] の値を手動で設定する場合は、[設定のカスタマイズ] を選択します。
-
[選択した IAM ロールを選択したオプティマイザーに適用] オプションのボックスを選択して、すべてのオプティマイザーを有効にするために単一の IAM ロールを使用します。
-
Iceberg テーブルオプティマイザーが、特定の仮想プライベートクラウド (VPC) から Amazon S3 バケットにアクセスする必要があるセキュリティポリシー設定がある場合は、AWS Glue ネットワーク接続を作成するか、既存のバケットを使用します。
AWS Glue VPC 接続をまだ設定していない場合は、AWS Glue コンソールまたは AWS CLI/SDK を使用してコネクタ用の接続を作成するセクションの手順に従って、新しい接続を作成します。
次に、[スナップショット保持設定] で、[Iceberg テーブル設定] で指定された値を使用するか、スナップショット保持期間 (history.expire.max-snapshot-age-ms) と保持するスナップショットの最小数 (history.expire.min-snapshots-to-keep) のカスタム値を指定します。
-
[関連するファイルを削除] を選択して、テーブルオプティマイザーがテーブルメタデータから古いスナップショットを削除するときに、基盤となるファイルを削除します。
このオプションを選択しない場合、古いスナップショットがテーブルメタデータから削除されたときに、関連するファイルが孤立ファイルとしてストレージに残ります。
-
次に、注意書きを読み、[同意します] を選択して続行します。
データカタログでは、スナップショット保持オプティマイザーにより、ブランチおよびタグレベルの保持ポリシーによって制御されるライフサイクルが尊重されます。詳細については、Iceberg のドキュメントの「Branching and tagging」セクションを参照してください。
-
設定を確認し、[最適化を有効にする] を選択します。
保持オプティマイザーが実行され、設定に基づいて古いスナップショットの有効期限が切れるまで数分待ちます。
- AWS CLI
-
AWS Glue で新しい Iceberg テーブルのスナップショット保持を有効にするには、タイプが retention
のテーブルオプティマイザーを作成し、table-optimizer-configuration
の enabled
フィールドを true
に設定する必要があります。これを行うには、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 オペレーションを呼び出して、テーブルのスナップショット保持オプティマイザーを有効にします。
圧縮を有効にすると、[テーブル最適化] タブに以下の圧縮の詳細が表示されます (約 15~20 分後)。
- 開始時刻
-
スナップショット保持オプティマイザーが開始された時刻。値は UTC 時間のタイムスタンプです。
- 実行時間
-
この時間は、オプティマイザーがタスクを完了するためにかかる時間を示します。値は UTC 時間のタイムスタンプです。
- ステータス
-
オプティマイザーの実行のステータス。値は成功または失敗です。
- 削除されたデータファイル
削除されたファイルの合計数。
- 削除されたマニフェストファイル
-
削除されたマニフェストファイルの合計数。
- 削除されたマニフェストリスト
-
削除されたマニフェストリストの合計数。