

# テーブルのレコード有効期限
<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 は、レコードが有効期限切れの対象となった直後に、そのレコードを期限切れとして削除することはありません。
+ レコードは、有効期限が切れて削除された後に復元することはできません。