

# S3 Tables のメンテナンス
<a name="s3-tables-maintenance-overview"></a>

Amazon S3 は、S3 テーブルバケット内のテーブルのパフォーマンスを向上させるために自動的にメンテナンスを実行します。メンテナンスはテーブルバケットと個々のテーブルレベルで実行され、以下が含まれます。

**テーブルバケットレベルのメンテナンス:**  
+ **参照されていないファイルの削除** – 孤立したファイルをクリーンアップして、ストレージの使用量とコストを最適化します。

**テーブルレベルのメンテナンス:**  
+ **ファイル圧縮** – 小さなファイルを統合して、クエリのパフォーマンスを向上させ、ストレージコストを削減します。
+ **スナップショットの管理** – テーブルのバージョン履歴を制御し、メタデータの過剰な増加を防ぎます。

すべてのオプションはデフォルトで有効になっています。これらのオペレーションは、メンテナンス設定ファイルを使用して編集または無効化できます。

これらのオプションに加えて、テーブルのレコードの有効期限設定を有効にして設定することもできます。このオプションを使用すると、Amazon S3 はレコードの有効期限が切れると、テーブルからレコードを自動的に削除します。

**Topics**
+ [

# S3 Tables メンテナンスジョブのステータス
](s3-tables-maintenance-status.md)
+ [

# テーブルバケットのメンテナンス
](s3-table-buckets-maintenance.md)
+ [

# テーブルのメンテナンス
](s3-tables-maintenance.md)
+ [

# テーブルのレコード有効期限
](s3-tables-record-expiration.md)
+ [

# メンテナンスジョブに関する考慮事項と制限事項
](s3-tables-considerations.md)

# S3 Tables メンテナンスジョブのステータス
<a name="s3-tables-maintenance-status"></a>

S3 Tables メンテナンスジョブは、S3 Tables またはテーブルバケットに対して定期的に実行されます。`GetTableMaintenanceJobStatus` API を使用して、これらのジョブのステータスをクエリできます。

**AWS CLI を使用してメンテナンスジョブのステータスを取得する方法**  
次の例では、`GetTableMaintenanceJobStatus` API を使用してメンテナンスジョブのステータスを取得します。  

```
aws s3tables get-table-maintenance-job-status \
   --table-bucket-arn="arn:aws:s3tables:arn:aws::111122223333:bucket/amzn-s3-demo-bucket1" \
   --namespace="mynamespace" \
   --name="testtable"
```
詳細については、**AWS CLI コマンドリファレンスの「[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/get-table-maintenance-job-status.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/get-table-maintenance-job-status.html)」を参照してください。

S3 Tables メンテナンスジョブは、次の 4 つのステータス間で移行できます。
+ `Successful`
+ `Failed`
+ `Disabled`
+ `Not_Yet_Run`

失敗したステータスのジョブには失敗のメッセージが含まれます。次のリストに、考えられる失敗のメッセージを示します。
+ テーブルの読み取り中に Iceberg 検証例外が発生しました。テーブルが読み取り可能で、Iceberg 仕様に準拠しており、S3 Tables のエイリアスで始まる S3 パスのみが含まれていることを確認します。
+ Iceberg スナップショット管理は現在、ユーザー定義のタグやリファレンスをサポートしていません。
+ Iceberg テーブルのメンテナンス設定は、'history.expire.max-snapshot-age-ms' および 'history.expire.min-snapshots-to-keep' テーブルプロパティと互換性がありません。
+ Iceberg スナップショット管理と参照されていないファイルの削除は、「gc.enabled」テーブルプロパティが false の場合、サポートされていません。このプロパティが設定されていないか、明示的に true に設定されていることを確認します。
+ 古いメタデータのため、コミットに失敗しました。メンテナンスは、次に利用可能な機会に再試行されます。
+ テーブルのメンテナンスを実行するためのアクセス権が不十分です。テーブルの暗号化に使用するキーがアクティブであり、存在すること、また S3 サービスプリンシパル `maintenance.s3tables.amazonaws.com` へのアクセスを許可するリソースポリシーがあることを確認します。
**注記**  
 S3 Tables の AWS KMS アクセス許可の詳細については、「[S3 Tables の SSE-KMS 暗号化のアクセス許可要件](s3-tables-kms-permissions.md)」を参照してください。
+ 内部エラー

# テーブルバケットのメンテナンス
<a name="s3-table-buckets-maintenance"></a>

Amazon S3 は、テーブルバケットの管理とパフォーマンスを向上させるためのメンテナンスオペレーションを提供します。次のオプションは、すべてのテーブルバケットでデフォルトで有効になっています。このオプションを編集または無効化するには、テーブルバケットのメンテナンス設定ファイルを指定します。

この設定を編集するには、`s3tables:PutTableBucketMaintenanceConfiguration` アクセス許可が必要です。

**Topics**
+ [

## 参照されていないファイルの削除
](#s3-table-bucket-maintenance-unreferenced)
+ [

## 考慮事項と制限事項
](#s3-tables-buckets-considerations-see-more)

## 参照されていないファイルの削除
<a name="s3-table-bucket-maintenance-unreferenced"></a>

参照されていないファイルの削除は、テーブルスナップショットによって参照されていないすべてのオブジェクトを識別して削除します。参照されていないファイル削除ポリシーの一部として、`unreferencedDays` (デフォルトでは 3 日間) と `nonCurrentDays` (デフォルトでは 10 日間) の 2 つのプロパティを設定できます。

テーブルで参照されておらず、`unreferencedDays` プロパティより古いオブジェクトの場合、S3 はオブジェクトを最新ではないものとしてマークします。S3 は、`nonCurrentDays` プロパティで指定された日数が経過すると、以前のオブジェクトを削除します。

**注記**  
以前のオブジェクトの削除は永続的であり、これらのオブジェクトを復元する方法はありません。

最新でないとマークされたオブジェクトを表示または復旧するには、AWS サポート に連絡する必要があります。AWS サポート へのお問い合わせの詳細については、[AWS サポート ドキュメント](https://aws.amazon.com/documentation/aws-support/)の「[AWS へのお問い合わせ](https://aws.amazon.com/contact-us/)」を参照してください。

参照されていないファイルの削除では、そのテーブルのみを参照するオブジェクトがテーブルから削除されます。テーブル外でこれらのオブジェクトへの参照が行われても、参照されていないファイルの削除によるオブジェクトの削除は妨げられません。

参照されていないファイルの削除を無効にしても、進行中のジョブは影響を受けません。新しい設定は、設定変更後の次のジョブで有効になります。詳細については、「[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)」で料金情報を参照してください。

参照されていないファイルの削除は、テーブルバケットレベルでのみ設定できます。この設定は、バケット内のすべてのテーブルに適用されます。

**AWS CLI を使用して参照されていないファイルの削除を設定するには**  
次の例では、`PutTableBucketMaintenanceConfiguration` API を使用して `unreferencedDays` を 4 日間に設定し、`nonCurrentDays` を 10 日間に設定します。  

```
aws s3tables put-table-bucket-maintenance-configuration \
   --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \
   --type icebergUnreferencedFileRemoval \
   --value '{"status":"enabled","settings":{"icebergUnreferencedFileRemoval":{"unreferencedDays":4,"nonCurrentDays":10}}}'
```

詳細については、**AWS CLI コマンドリファレンスの「[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-bucket-maintenance-configuration.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-bucket-maintenance-configuration.html)」を参照してください。

## 考慮事項と制限事項
<a name="s3-tables-buckets-considerations-see-more"></a>

参照されていないファイルの削除に関する追加の考慮事項と制限事項の詳細については、「[メンテナンスジョブに関する考慮事項と制限事項](s3-tables-considerations.md)」を参照してください。

# テーブルのメンテナンス
<a name="s3-tables-maintenance"></a>

S3 Tables は、個別のテーブルの管理とパフォーマンスを向上させるためのメンテナンスオペレーションを提供します。次のオプションは、テーブルバケットのすべてのテーブルでデフォルトで有効になっています。オプションを編集または無効化するには、S3 テーブルのメンテナンス設定ファイルを指定します。

この設定を編集するには、`s3tables:GetTableMaintenanceConfiguration` および `s3tables:PutTableMaintenanceConfiguration` アクセス許可が必要です。

**注記**  
CloudTrail ログを使用してテーブルの S3 Tables 自動メンテナンスオペレーションを追跡できます。詳細については、「[S3 Tables メンテナンスの CloudTrail 管理イベント](s3-tables-logging.md#s3-tables-maintenance-events)」を参照してください。

**Topics**
+ [

## 圧縮
](#s3-tables-maintenance-compaction)
+ [

## スナップショットの管理
](#s3-tables-maintenance-snapshot)
+ [

## 考慮事項と制限事項
](#s3-tables-considerations-see-more)

## 圧縮
<a name="s3-tables-maintenance-compaction"></a>

圧縮はテーブルレベルで設定され、複数の小さなオブジェクトを少数の大きなオブジェクトに結合して Apache Iceberg クエリパフォーマンスを向上させます。オブジェクトを組み合わせると、圧縮はテーブル内の行レベル削除の効果も適用します。

圧縮はすべてのテーブルでデフォルトで有効になっており、デフォルトのターゲットファイルサイズは 512MB、または 64MB から 512MB の間で指定したカスタム値です。圧縮されたファイルは、テーブルの最新のスナップショットとして書き込まれます。

**注記**  
圧縮は Apache Parquet、Avro、および ORC ファイルタイプでサポートされています。

### 圧縮戦略
<a name="s3-tables-maintenance-compaction-strategies"></a>

複数の圧縮戦略から選択でき、クエリパターンとテーブルのソート順序に応じて、クエリのパフォーマンスをさらに向上させることができます。

S3 Tables は、テーブルに対して次の圧縮戦略をサポートしています。
+ **自動 (デフォルト)**
  + Amazon S3 は、テーブルのソート順序に基づいて最適な圧縮戦略を選択します。これは、すべてのテーブルのデフォルトの圧縮戦略です。
  + メタデータにソート順序が定義されているテーブルの場合、`auto` は自動的に `sort` 圧縮を適用します。
  + ソート順のないテーブルの場合、`auto` はデフォルトで `binpack` 圧縮を使用します。
+ **ビンパック**
  + 小さなファイルをより大きなファイルに結合します。通常は 100MB を超えるサイズをターゲットにしながら、保留中の削除を適用します。これは、ソートされていないテーブルのデフォルトの圧縮戦略です。
+ **並べ替え**
  + 圧縮中に階層によって自動的にソートされる指定された列に基づいてデータを整理し、フィルタリングされたオペレーションのクエリパフォーマンスを向上させます。この戦略は、クエリが特定の列を頻繁にフィルタリングする場合に推奨されます。この戦略を使用すると、テーブルプロパティで `sort_order` が定義されている場合、S3 Tables は列に階層ソートを自動的に適用します。
+ **Z オーダー**
  + ソートに使用できる単一のスカラー値に複数の属性を統合することでデータ整理を最適化し、複数のディメンションにまたがって効率的なクエリを実行できるようにします。この戦略は、複数のディメンションにまたがるデータを同時にクエリする必要がある場合に推奨されます。この戦略では、`sort_order` テーブルプロパティを使用して Iceberg テーブルプロパティでソート順序を定義する必要があります。

圧縮には追加料金が発生します。`z-order` および `sort` 圧縮戦略では、`binpack` よりも高いコストが発生する可能性があります。詳細については、「[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)」で料金情報を参照してください。

### 圧縮の例
<a name="tables-compaction-examples"></a>

次の例は、テーブル圧縮の設定を示しています。

**AWS CLI を使用して圧縮ターゲットファイルサイズを設定するには**  
最小ターゲット圧縮ファイルサイズは 64MB、最大サイズは 512MB です。  
次の例では、`PutTableMaintenanceConfiguration` API を使用してターゲットファイルのサイズを 256MB に変更します。  

```
aws s3tables put-table-maintenance-configuration \
   --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket1 \
   --type icebergCompaction \
   --namespace mynamespace \
   --name testtable \
   --value='{"status":"enabled","settings":{"icebergCompaction":{"targetFileSizeMB":256}}}'
```
詳細については、**AWS CLI コマンドリファレンスの「[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html)」を参照してください。

**AWS CLI を使用して圧縮戦略を設定するには**  
次の例では、`PutTableMaintenanceConfiguration` API を使用して圧縮戦略を `sort` に変更します。圧縮を設定するときは、`auto`、`binpack`、`sort`、または `z-order` の圧縮戦略から選択できます。  
圧縮戦略を `sort` または `z-order` に設定するには、次の前提条件が必要です。  
+ Iceberg テーブルプロパティで定義されたソート順序。
+ `s3tables:GetTableData` アクセス許可

```
aws s3tables put-table-maintenance-configuration \
   --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \
   --type icebergCompaction \
   --namespace mynamespace \
   --name testtable \
   --value='{"status":"enabled","settings":{"icebergCompaction":{"strategy":"sort"}}}'
```
詳細については、**AWS CLI コマンドリファレンスの「[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html)」を参照してください。

**AWS CLI を使用して圧縮を無効にするには**  
次の例では、`PutTableMaintenanceConfiguration` API を使用して圧縮を無効にします。  

```
aws s3tables put-table-maintenance-configuration \
   --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \
   --type icebergCompaction \
   --namespace mynamespace \
   --name testtable \
   --value='{"status":"disabled","settings":{"icebergCompaction":{"targetFileSizeMB":256}}}'
```
詳細については、**AWS CLI コマンドリファレンスの「[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html)」を参照してください。

## スナップショットの管理
<a name="s3-tables-maintenance-snapshot"></a>

スナップショット管理は、テーブルのアクティブなスナップショットの数を決定します。これは、`MinimumSnapshots` (デフォルトでは 1) と `MaximumSnapshotAge` (デフォルトでは 120 時間) に基づいています。スナップショット管理は、これらの設定に基づいてテーブルスナップショットを有効期限切れにし、削除します。

スナップショットの有効期限が切れると、Amazon S3 はそのスナップショットによってのみ参照されるすべてのオブジェクトを最新でないものとしてマークします。これらの最新でないオブジェクトは、参照されていないファイル削除ポリシーの `NoncurrentDays` プロパティで指定された日数が経過した後に削除されます。

**注記**  
以前のオブジェクトの削除は永続的であり、これらのオブジェクトを復元する方法はありません。

最新でないとマークされたオブジェクトを表示または復旧するには、AWS サポート に連絡する必要があります。AWS サポート へのお問い合わせの詳細については、[AWS サポート ドキュメント](https://aws.amazon.com/documentation/aws-support/)の「[AWS へのお問い合わせ](https://aws.amazon.com/contact-us/)」を参照してください。

スナップショット管理は、そのテーブルのみを参照して、テーブルから削除するオブジェクトを決定します。テーブルの外からこれらのオブジェクトを参照しても、スナップショット管理によるオブジェクトの削除は妨げられません。

**注記**  
スナップショット管理では、ブランチやタグベースの保持を含め、`metadata.json` ファイル内の Iceberg テーブルプロパティとして、または `ALTER TABLE SET TBLPROPERTIES` SQL コマンドを介して設定した保持値はサポートされていません。ブランチまたはタグベースの保持ポリシーを設定する場合、または `PutTableMaintenanceConfiguration` API で設定された値よりも長い保持ポリシーを `metadata.json` ファイルに設定する場合、スナップショット管理は無効になります。このような場合、S3 はスナップショットの有効期限が切れたり削除されたりしないため、ストレージ料金が発生しないように、スナップショットを手動で削除するか、Iceberg テーブルからプロパティを削除する必要があります。

スナップショット管理は、テーブルレベルでのみ設定できます。詳細については、「[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)」で料金情報を参照してください。

### スナップショット管理の例
<a name="tables-snapshot-examples"></a>

次の例は、テーブルスナップショット管理の設定を示しています。

**AWS CLI を使用してスナップショット管理を設定するには**  
次の例では、`PutTableMaintenanceConfiguration` API を使用して `MinimumSnapshots` を 10 に設定し、`MaximumSnapshotAge`を 2,500 時間に設定します。  

```
aws s3tables put-table-maintenance-configuration \
--table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \
--namespace my_namespace \
--name my_table \
--type icebergSnapshotManagement \
--value '{"status":"enabled","settings":{"icebergSnapshotManagement":{"minSnapshotsToKeep":10,"maxSnapshotAgeHours":2500}}}'
```

**AWS CLI を使用してスナップショット管理を無効にするには**  
次の例では、`PutTableMaintenanceConfiguration` API を使用してスナップショット管理を無効にします。  

```
aws s3tables put-table-maintenance-configuration \
--table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \
--namespace my_namespace \
--name my_table \
--type icebergSnapshotManagement \
--value '{"status":"disabled","settings":{"icebergSnapshotManagement":{"minSnapshotsToKeep":1,"maxSnapshotAgeHours":120}}}'
```

詳細については、**AWS CLI コマンドリファレンスの「[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3tables/put-table-maintenance-configuration.html)」を参照してください。

## 考慮事項と制限事項
<a name="s3-tables-considerations-see-more"></a>

圧縮とスナップショット管理に関するその他の考慮事項と制限の詳細については、「[メンテナンスジョブに関する考慮事項と制限事項](s3-tables-considerations.md)」を参照してください。

**注記**  
S3 Tables は、parquet の row-group-default サイズである 128 MB を適用します。

# テーブルのレコード有効期限
<a name="s3-tables-record-expiration"></a>

デフォルトでは、S3 テーブルのレコードは期限切れになりません。テーブルのストレージコストを最小限に抑えるために、テーブルレコードの有効期限を有効にして設定できます。このオプションを使用すると、Amazon S3 はレコードの有効期限が切れると、テーブルからレコードを自動的に削除します。

テーブルのレコードの有効期限を有効にする場合は、レコードの有効期限が切れる前にテーブルにレコードを保持する日数を指定します。これは、1 日から 2,147,483,647 日までの任意の日数にすることができます。例えば、テーブルレコードを 1 年間保持するには、`365` 日を指定します。その後、レコードは 365 日間保持されます。365 日後、レコードは期限切れになり、Amazon S3 は自動的に削除します。

特定の AWS のサービス (現在は Amazon S3 ストレージレンズおよび Amazon SageMaker Catalog) からの特定のデータセットを保存する AWS マネージドテーブルのレコードの有効期限を有効にして設定できます。レコードの有効期限オプションは現在、他の AWS マネージドテーブルでは使用できません。例外は Amazon S3 メタデータジャーナルテーブルです。ジャーナルテーブルは、サービスレベルで指定した個別のレコードの有効期限設定を使用します。このタイプのテーブルのレコードの有効期限を設定する方法については、「[ジャーナルテーブルレコードを期限切れにする](metadata-tables-expire-journal-table-records.md)」を参照してください。作成した S3 テーブルでは、レコードの有効期限オプションを使用できないことに注意してください。

テーブルのレコードの有効期限を有効にした後は、いつでも無効にできます。その後、Amazon S3 はテーブルからのレコードの有効期限切れと削除を停止します。

**Topics**
+ [仕組み](#s3-tables-record-expiration-how-it-works)
+ [レコードの有効期限の設定](#s3-tables-record-expiration-configure)
+ [レコードの有効期限のモニタリング](#s3-tables-record-expiration-monitor)
+ [考慮事項](#s3-tables-expiration-considerations)

## レコードの有効期限の仕組み
<a name="s3-tables-record-expiration-how-it-works"></a>

レコードの有効期限は、レコードがテーブルのレコードの有効期限設定で指定した日数よりも古い場合に、S3 テーブルからレコードを自動的に削除します。レコードの有効期限を判断するために、Amazon S3 はレコードに特定のタイムスタンプを使用します。タイムスタンプ列の選択は、テーブルのテーブルスキーマから直接決定されます。使用するタイムスタンプ列を指定する必要はありません。テーブルは AWS によって管理され、テーブルのレコードの有効期限を有効にすると、Amazon S3 は使用する適切な列を自動的に選択します。

特定の Amazon S3 ストレージレンズメトリクスまたは特定の Amazon SageMaker Catalog メタデータを保存する AWS マネージドテーブルのレコードの有効期限設定を有効にして設定できます。レコードの有効期限オプションは、これらのサービスの次の AWS マネージドテーブルで使用できます。
+ S3 ストレージレンズ – `bucket_property_metrics`、`default_activity_metrics`、`default_storage_metrics`、`expanded_prefixes_activity_metrics`、および `expanded_prefixes_storage_metrics`。これらのテーブルのレコードの有効期限を判断するために、Amazon S3 はレコードの `report_time` フィールドを使用します。
+ Amazon SageMaker Catalog – `ASSET`。このテーブルのレコードの有効期限を判断するために、Amazon S3 はレコードの `snapshot_time` フィールドを使用します。

テーブルのレコードの有効期限を有効にすると、Amazon S3 はテーブルに対して次のオペレーションを実行するレコードの有効期限ジョブの実行を開始します。

1. 指定された有効期限設定より古いレコードを特定します。

1. 期限切れのレコードへの参照を除外する新しいスナップショットを作成します。

削除は、テーブルのメンテナンス設定のスナップショットの有効期限設定と参照されていないファイル削除設定にも基づいています。これらの設定の詳細については、「[テーブルのメンテナンス](s3-tables-maintenance.md)」を参照してください。

**警告**  
Amazon S3 では、レコードは期限切れの対象になってから 24～48 時間以内にレコードが期限切れとなり、削除されます。テーブルレコードは最新のスナップショットから削除されます。レコードのデータとストレージは、テーブルのメンテナンスオペレーションによって削除されます。テーブルレコードは有効期限が切れると復元できなくなります。

## テーブルのレコードの有効期限の設定
<a name="s3-tables-record-expiration-configure"></a>

Amazon S3 コンソール、Amazon S3 REST API、AWS Command Line Interface (AWS CLI)、または AWS SDK を使用して、Amazon S3 テーブルのレコードの有効期限設定を有効化、設定、および管理できます。

テーブルに対してこれらのタスクを実行する前に、次の AWS Identity and Access Management (IAM) アクセス許可があることを確認してください。
+ `s3tables:GetTableRecordExpirationConfiguration` – このアクションにより、テーブルの現在のレコードの有効期限設定にアクセスできます。
+ `s3tables:PutTableRecordExpirationConfiguration` – このアクションにより、テーブルのレコードの有効期限設定を有効化、設定、無効化できます。
+ `s3tables:GetTableRecordExpirationJobStatus` – このアクションにより、テーブルのレコード有効期限オペレーション (ジョブ) のステータスをモニタリングし、オペレーションのメトリクスにアクセスできます。

以下のセクションでは、Amazon S3 コンソールと AWS CLI を使用して、テーブルのレコードの有効期限設定を有効化、設定、無効化する方法について説明します。Amazon S3 REST API または AWS SDK でこれらのタスクを実行するには、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_PutTableRecordExpirationConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_PutTableRecordExpirationConfiguration.html) オペレーションを使用します。詳細については、「*Amazon Simple Storage Service API リファレンス*」の「[Amazon S3 を使用した開発](https://docs.aws.amazon.com/AmazonS3/latest/API/developing-s3.html)」を参照してください。

### S3 コンソールの使用
<a name="configure-table-record-expiration-console"></a>

コンソールを使用して S3 テーブルのレコードの有効期限設定を有効にして設定するには、次の手順に従います。

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. 左側のナビゲーションペインで、**[テーブルバケット]** を選択します。

1. **[テーブルバケット]** ページで、テーブルを保存するバケットを選択します。

1. **[テーブル]** タブでテーブルを選択します。

1. **[メンテナンス]** タブの **[レコードの有効期限]** セクションで、**[編集]** を選択します。

1. **[レコードの有効期限]** で、**[有効化]** を選択します。

1. **[レコードの有効期限が切れるまでの日数]** には、テーブルにレコードを保持する日数を入力します。これは、1～2,147,483,647 の範囲の任意の整数にすることができます。例えば、レコードを 1 年間保持するには、**365** と入力します。
**警告**  
テーブル内のレコードの適切な保持期間を決定する際には、有効期限が切れた後はレコードを復元できないことに注意してください。

1. **[Save changes]** (変更の保存) をクリックします。

その後、保持期間を変更するには、前述のステップを繰り返します。

その後、レコードの有効期限を無効にするには、ステップ 1～5 を繰り返します。次に、ステップ 6 で **[無効にする]** を選択します。変更が完了したら、[**変更の保存**] を選択します。

### の使用AWS CLI
<a name="configure-table-record-expiration-CLI"></a>

AWS CLI を使用して S3 テーブルのレコードの有効期限設定を設定および管理するには、[https://docs.aws.amazon.com/cli/latest/reference/s3tables/put-table-record-expiration-configuration.html](https://docs.aws.amazon.com/cli/latest/reference/s3tables/put-table-record-expiration-configuration.html) コマンドを実行します。

まず、テーブルに適用するレコードの有効期限設定を含む JSON ファイルを作成します。次の例は、テーブルのレコードの有効期限を有効にする JSON ファイルの内容を示しています。また、テーブル内のレコードの保持期間を 30 日間に指定します。つまり、テーブルレコードが 30 日後に期限切れになることを指定します。

```
{
    "status": "enabled",
        "settings": {
            "days": 30
        {
}
```

上記の例を使用するには、`user input placeholders` をユーザー自身の情報に置き換えます。

**警告**  
テーブル内のレコードの適切な保持期間を決定する際には、有効期限が切れた後はレコードを復元できないことに注意してください。

テーブルのレコードの有効期限を無効にするには、`status` フィールドに `disabled` を指定し、ファイルから `settings` オブジェクトを省略します。例えば、次のようになります。

```
{
    "status": "disabled"
}
```

適用する設定で JSON ファイルを作成したら、`put-table-record-expiration-configuration` コマンドを実行します。`table-arn` パラメータについては、テーブルの Amazon リソースネーム (ARN) を指定します。`value` パラメータには、設定を保存するファイルの名前を指定します。

例えば、次のコマンドは、テーブルのレコードの有効期限設定を更新します。設定は、*`record-expiration-config.json`* という名前のファイルで指定されます。

```
aws s3tables put-table-record-expiration-configuration \
    --table-arn arn:aws:s3tables:us-east-1:123456789012:bucket/amzn-s3-demo-table-bucket/table/amzn-s3-demo-table \
    --value file://./record-expiration-config.json
```

上記の例を使用するには、`user input placeholders` をユーザー自身の情報に置き換えます。

## テーブルのレコードの有効期限のモニタリング
<a name="s3-tables-record-expiration-monitor"></a>

S3 テーブルのレコード有効期限オペレーションのステータスと結果をモニタリングするには、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_GetTableRecordExpirationJobStatus.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_GetTableRecordExpirationJobStatus.html) オペレーションを使用するか、AWS CLI を使用している場合は [https://docs.aws.amazon.com/cli/latest/reference/s3tables/get-table-record-expiration-job-status.html](https://docs.aws.amazon.com/cli/latest/reference/s3tables/get-table-record-expiration-job-status.html) コマンドを実行します。リクエストで、テーブルの Amazon リソースネーム (ARN) を指定します。

例えば、次の AWS CLI コマンドは、テーブルバケット内の特定のテーブルのレコード有効期限オペレーションのステータスを取得します。この例を実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。

```
aws s3tables get-table-record-expiration-job-status \
    --table-arn arn:aws:s3tables:us-east-1:123456789012:bucket/amzn-s3-demo-table-bucket/table/amzn-s3-demo-table
```

リクエストが成功すると、Amazon S3 がテーブルのレコード有効期限オペレーションを最後に実行した日時や、その実行のステータスなどの詳細を示すレスポンスを受け取ります。最新の実行が成功した場合、レスポンスには、削除されたデータファイルとレコードの数、削除されたデータの合計サイズなどの処理メトリクスも含まれます。最新の実行中にエラーが発生した場合、レスポンスには、実行が失敗した理由を説明する失敗メッセージが含まれます。

## 考慮事項
<a name="s3-tables-expiration-considerations"></a>

AWS マネージド S3 テーブルのレコードの有効期限設定を設定および管理するときは、次の点に注意してください。
+ レコードの有効期限は、サポートされている AWS のサービス、Amazon S3 ストレージレンズ、Amazon SageMaker Catalog によって作成された特定の AWS マネージドテーブルでのみ使用できます。さらに、レコードの有効期限は、テーブルバケット全体ではなく、個々のテーブルでのみ使用できます。
+ レコードの有効期限を判断するために、Amazon S3 はテーブルで特定のタイムスタンプを使用します。これらのタイムスタンプは、Amazon S3 がテーブルにレコードを取り込んだときではなく、データが作成された日時を表します。使用されるタイムスタンプ列は、テーブルを発行するサービスによって異なります。S3 ストレージレンズメトリクスの場合は `report_time` フィールド、Amazon SageMaker Catalog メタデータの場合は `snapshot_time` フィールドです。テーブルは AWS によって管理されるため、使用するフィールドを指定することはできません。
+ データをテーブルにエクスポートするときに遅延が発生すると、レコードの有効期限が予想よりも早く切れる可能性があります。このため、テーブルの有効期限設定の保持期間にバッファを追加して、潜在的な取り込み遅延を考慮することをお勧めします。
+ レコードは有効期限切れとなり、有効期限切れの対象になってから 24～48 時間以内に削除されます。Amazon S3 は、レコードが有効期限切れの対象となった直後に、そのレコードを期限切れとして削除することはありません。
+ レコードは、有効期限が切れて削除された後に復元することはできません。

# メンテナンスジョブに関する考慮事項と制限事項
<a name="s3-tables-considerations"></a>

Amazon S3 には、S3 テーブルまたはテーブルバケットのパフォーマンスを向上させるためのメンテナンスオペレーションが用意されています。これらのオプションは、ファイル圧縮、スナップショット管理、および参照されていないファイルの削除です。これらの管理オプションの制限事項と考慮事項を次に示します。

**Topics**
+ [

## 圧縮に関する考慮事項
](#s3-tables-compaction-considerations)
+ [

## スナップショット管理に関する考慮事項
](#s3-tables-snapshot-considerations)
+ [

## 参照されていないファイルの削除に関する考慮事項
](#s3-tables-unreferenced-file-removal-considerations)
+ [

## S3 テーブルおよびテーブルバケットのメンテナンスオペレーションの制限と関連する API
](#s3-tables-maintenance-limits)

## 圧縮に関する考慮事項
<a name="s3-tables-compaction-considerations"></a>

圧縮には以下の考慮事項が適用されます。圧縮の詳細については、「[テーブルのメンテナンス](s3-tables-maintenance.md)」を参照してください。
+ 圧縮は Apache Parquet、Avro、および ORC ファイルタイプでサポートされています。
+ 圧縮は、デフォルトで新しいファイルを Apache Parquet 形式で書き込みます。代わりにファイルを Avro または ORC 形式に圧縮するには、`write.format.default` テーブルプロパティを `avro` または `orc` に設定します。
+ 圧縮はデータ型 `Fixed` をサポートしていません。
+ 圧縮は圧縮タイプ `brotli`、`lz4` をサポートしていません。
+ 圧縮は自動スケジュールで行われます。圧縮に関連する料金を回避するには、[PutTableMaintenanceConfiguration](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3Buckets_PutTableMaintenanceConfiguration.html) API オペレーションを使用して、テーブルに対して手動で無効にできます。

**注記**  
Apache Iceberg は、オプティミスティック同時実行モデルと競合検出を使用して、書き込みトランザクションを調停します。オプティミスティック同時実行では、ユーザートランザクションと圧縮トランザクションが競合し、トランザクションが失敗する可能性があります。競合が発生すると、圧縮ジョブは失敗時に再試行されます。さらに、パイプラインで再試行ロジックを使用して、競合するオペレーションで失敗したトランザクションを克服することもお勧めします。

## スナップショット管理に関する考慮事項
<a name="s3-tables-snapshot-considerations"></a>

スナップショット管理には、以下の考慮事項が適用されます。スナップショット管理の詳細については、「[テーブルのメンテナンス](s3-tables-maintenance.md)」を参照してください。
+ スナップショットは、保持するスナップショットの最小数と指定された保持期間という両方の基準が満たされた場合にのみ保持されます。
+ スナップショット管理では、Apache Iceberg から期限切れのスナップショットメタデータを削除し、期限切れのスナップショットのタイムトラベルクエリを防ぎ、オプションで関連するデータファイルを削除します。
+ スナップショット管理では、ブランチやタグベースの保持を含め、`metadata.json` ファイル内の Iceberg テーブルプロパティとして、または `ALTER TABLE SET TBLPROPERTIES` SQL コマンドを介して設定した保持値はサポートされていません。ブランチまたはタグベースの保持ポリシーを設定する場合、または `PutTableMaintenanceConfiguration` API で設定された値よりも長い保持ポリシーを `metadata.json` ファイルに設定する場合、スナップショット管理は無効になります。このような場合、S3 はスナップショットの有効期限が切れたり削除されたりしないため、ストレージ料金が発生しないように、スナップショットを手動で削除するか、Iceberg テーブルからプロパティを削除する必要があります。

## 参照されていないファイルの削除に関する考慮事項
<a name="s3-tables-unreferenced-file-removal-considerations"></a>

参照されていないファイルの削除には、以下の考慮事項が適用されます。参照されていないファイルの削除の詳細については、「[テーブルバケットのメンテナンス](s3-table-buckets-maintenance.md)」を参照してください。
+ 参照されていないファイルを削除すると、作成時刻が保持期間より前の場合、Iceberg メタデータによって参照されなくなったデータとメタデータファイルが削除されます。

## S3 テーブルおよびテーブルバケットのメンテナンスオペレーションの制限と関連する API
<a name="s3-tables-maintenance-limits"></a>




| メンテナンスオペレーション | プロパティ | テーブルバケットレベルで設定可能か。 | テーブルレベルで設定可能か。 | デフォルトの値 | 最小値 | 関連する Iceberg メンテナンスルーチン | S3 Tables API の制御 | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| 圧縮 | targetFileSizeMB | いいえ | あり | 512MB | 64MB | [https://iceberg.apache.org/docs/latest/maintenance/#compact-data-files](https://iceberg.apache.org/docs/latest/maintenance/#compact-data-files) | [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableMaintenanceConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableMaintenanceConfiguration.html) | 
| スナップショットの管理 | minimumSnapshots | いいえ | あり | 1 | 1 | [https://iceberg.apache.org/docs/latest/maintenance/#expire-snapshots](https://iceberg.apache.org/docs/latest/maintenance/#expire-snapshots) retainLast | [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableMaintenanceConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableMaintenanceConfiguration.html) | 
| スナップショットの管理 | maximumSnapshotAge | いいえ | あり | 120 時間 | 1 時間 | [https://iceberg.apache.org/docs/latest/maintenance/#expire-snapshots](https://iceberg.apache.org/docs/latest/maintenance/#expire-snapshots) expireOlderThan | [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableMaintenanceConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableMaintenanceConfiguration.html) | 
| 参照されていないファイルの削除 | unreferencedDays | はい | なし | 3 日 | 1 日 | [https://iceberg.apache.org/docs/latest/maintenance/#delete-orphan-files](https://iceberg.apache.org/docs/latest/maintenance/#delete-orphan-files) | [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableBucketMaintenanceConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableBucketMaintenanceConfiguration.html) | 
| 参照されていないファイルの削除 | nonCurrentDays | はい | なし | 10 日 | 1 日 | 該当なし | [https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableBucketMaintenanceConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3tables_PutTableBucketMaintenanceConfiguration.html) | 

**注記**  
S3 Tables は、parquet の row-group-default サイズである 128 MB を適用します。