

# 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 테이블 또는 테이블 버킷에 대해 주기적으로 실행됩니다. `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 유지 관리 작업은 다음 네 가지 상태 간에 전환할 수 있습니다.
+ `Successful`
+ `Failed`
+ `Disabled`
+ `Not_Yet_Run`

실패 상태의 작업에는 실패 메시지가 포함됩니다. 다음 목록에는 나타날 수 있는 실패 메시지가 설명되어 있습니다.
+ 테이블을 읽으려고 할 때 Iceberg 검증 예외가 발생했습니다. 테이블이 읽을 수 있고 Iceberg 사양을 준수하며 S3 테이블 별칭으로 시작하는 S3 경로만 포함하는지 확인합니다.
+ Iceberg 스냅샷 관리는 현재 사용자 정의 태그 또는 참조를 지원하지 않습니다.
+ Iceberg 테이블 유지 관리 구성은 'history.expire.max-snapshot-age-ms' 및 'history.expire.min-snapshots-to-keep' 테이블 속성과 호환되지 않습니다.
+ 'gc.enabled' 테이블 속성이 false인 경우 Iceberg 스냅샷 관리 및 참조되지 않는 파일 제거가 지원되지 않습니다. 이 속성이 설정되지 않았거나 명시적으로 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일)의 두 가지 속성을 구성할 수 있습니다.

테이블에서 참조하지 않고 `unreferencedDays` 속성보다 오래된 객체의 경우 S3는 객체를 비최신으로 표시합니다. S3는 `nonCurrentDays` 속성에 지정된 일수 이후에 비최신 객체를 삭제합니다.

**참고**  
비최신 객체의 삭제는 영구적이며 이러한 객체를 복구할 방법이 없습니다.

비최신으로 표시된 객체를 보거나 복구하려면 AWS Support에 문의해야 합니다. AWS Support에 문의하는 방법에 대한 자세한 내용은 [AWS 문의](https://aws.amazon.com/contact-us/) 또는 [AWS Support 설명서](https://aws.amazon.com/documentation/aws-support/)를 참조하세요.

참조되지 않은 파일 제거는 해당 테이블만 참조하여 테이블에서 삭제할 객체를 결정합니다. 테이블 외부에서 이러한 객체를 참조해도 참조되지 않은 파일 제거가 객체를 삭제하는 것을 막을 수 없습니다.

참조되지 않은 파일 제거를 비활성화해도 진행 중인 작업은 영향을 받지 않습니다. 새 구성은 구성 변경 후 다음 작업에 적용됩니다. 자세한 내용은 [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은 테이블에 대해 다음과 같은 압축 전략을 지원합니다.
+ **Auto(기본값)**
  + Amazon S3는 테이블 정렬 순서에 따라 최적의 압축 전략을 선택합니다. 이는 모든 테이블에 대한 기본 압축 전략입니다.
  + 메타데이터에 정렬 순서가 정의된 테이블의 경우 `auto`는 `sort` 압축을 자동으로 적용합니다.
  + 정렬 순서가 없는 테이블의 경우 `auto`는 기본적으로 `binpack` 압축을 사용합니다.
+ **Binpack**
  + 작은 파일을 더 큰 파일로 결합합니다. 일반적으로 100MB 이상의 크기를 대상으로 하며 보류 중인 삭제를 적용합니다. 이는 정렬되지 않은 테이블의 기본 압축 전략입니다.
+ **정렬**
  + 압축 중에 계층 구조별로 자동으로 정렬되는 지정된 열을 기반으로 데이터를 정리하여 필터링된 작업에 대한 쿼리 성능을 개선합니다. 이 전략은 쿼리가 특정 열을 자주 필터링할 때 권장됩니다. 이 전략을 사용하면 `sort_order`가 테이블 속성에 정의되어 있을 때 S3 Tables이 열에 계층적 정렬을 자동으로 적용합니다.
+ **Z-order**
  + 여러 속성을 정렬에 사용할 수 있는 단일 스칼라 값으로 블렌딩하여 데이터 정리를 최적화하므로 여러 차원에 걸쳐 효율적인 쿼리가 가능합니다. 이 전략은 여러 차원에서 동시에 데이터를 쿼리해야 하는 경우에 권장됩니다. 이 전략을 사용하려면 `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 Support에 문의해야 합니다. AWS Support에 문의하는 방법에 대한 자세한 내용은 [AWS 문의](https://aws.amazon.com/contact-us/) 또는 [AWS Support 설명서](https://aws.amazon.com/documentation/aws-support/)를 참조하세요.

스냅샷 관리는 해당 테이블만 참조하여 테이블에서 삭제할 객체를 결정합니다. 테이블 외부에서 이러한 객체를 참조해도 스냅샷 관리가 객체를 삭제하는 것을 막을 수 없습니다.

**참고**  
스냅샷 관리는 `metadata.json` 파일에서 또는 브랜치 또는 태그 기반 보존을 포함한 `ALTER TABLE SET TBLPROPERTIES` SQL 명령을 통해 Iceberg 테이블 속성으로 구성한 보존 값을 지원하지 않습니다. 스냅샷 관리는 브랜치 또는 태그 기반 보존 정책을 구성하거나 `metadata.json` 파일에 `PutTableMaintenanceConfiguration` API를 통해 구성된 값보다 긴 보존 정책을 구성할 때 비활성화됩니다. 이러한 경우 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는 128MB의 parquets row-group-default 크기를 적용합니다.

# 테이블의 레코드 만료
<a name="s3-tables-record-expiration"></a>

기본적으로 S3 Tables의 레코드는 만료되지 않습니다. 테이블의 스토리지 비용을 최소화하기 위해 테이블에 대한 레코드 만료를 활성화 및 구성할 수 있습니다. 이 옵션을 사용하면 레코드가 만료될 때 Amazon S3가 테이블에서 레코드를 자동으로 제거합니다.

테이블에 대한 레코드 만료를 활성화하는 경우 레코드가 만료되기 전에 테이블에 레코드를 유지할 일수를 지정합니다. 일수는 1일부터 2,147,483,647일 사이로 지정할 수 있습니다. 예를 들어 테이블 레코드를 1년 동안 유지하려면 `365`일로 지정합니다. 그러면 레코드는 365일 동안 유지됩니다. 365일이 지나면 레코드가 만료되고 Amazon S3가 자동으로 레코드를 제거합니다.

특정 AWS 서비스, 현재 Amazon S3 Storage Lens 및 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 Storage Lens 지표 또는 특정 Amazon SageMaker Catalog 메타데이터를 저장하는 AWS 관리형 테이블에 대한 레코드 만료 설정을 활성화하고 구성할 수 있습니다. 레코드 만료 옵션은 해당 서비스에 대한 다음 AWS 관리형 테이블에 사용할 수 있습니다.
+ S3 Storage Lens – `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\$148시간 이내에 레코드를 만료시키고 삭제합니다. 테이블 레코드는 최신 스냅샷에서 제거됩니다. 레코드의 데이터 및 스토리지는 테이블 유지 관리 작업을 통해 제거됩니다. 만료된 테이블 레코드는 복구할 수 없습니다.

## 테이블에 대한 레코드 만료 구성
<a name="s3-tables-record-expiration-configure"></a>

Amazon S3 콘솔, Amazon S3 REST API, AWS Command Line Interface(AWS CLI) 또는 AWS SDK를 사용하여 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 Management Console에 로그인한 후 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 S3 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **테이블 버킷**을 선택합니다.

1. **테이블 버킷** 페이지에서 테이블을 저장하는 버킷을 선택합니다.

1. **테이블** 탭에서 테이블을 선택합니다.

1. **유지 관리** 탭의 **레코드 만료** 섹션에서 **편집**을 선택합니다.

1. **레코드 만료**에서 **활성화**를 선택합니다.

1. **레코드 만료까지의 일수**의 경우 테이블에 레코드를 유지할 일수를 입력합니다. 이 값은 1\$12,147,483,647 범위의 정수일 수 있습니다. 예를 들어 레코드를 1년 동안 유지하려면 **365**를 입력합니다.
**주의**  
테이블의 레코드에 대한 적절한 보존 기간을 결정할 때 레코드가 만료된 후에는 복구할 수 없습니다.

1. **변경 사항 저장**을 선택합니다.

이후에 보존 기간을 변경하려면 이전 단계를 반복합니다.

나중에 레코드 만료를 비활성화하려면 1\$15단계를 반복합니다. 그런 다음, 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 Storage Lens 및 Amazon SageMaker Catalog에서 생성한 특정 AWS 관리형 테이블에만 사용할 수 있습니다. 또한 레코드 만료는 전체 테이블 버킷이 아닌 개별 테이블에만 사용할 수 있습니다.
+ 테이블이 만료되는 시기를 확인하기 위해 Amazon S3는 레코드에 특정 타임스탬프를 사용합니다. 이러한 타임스탬프는 Amazon S3가 테이블의 레코드를 수집한 시점이 아니라 데이터가 생성된 시점을 나타냅니다. 사용되는 타임스탬프 열은 테이블을 게시하는 서비스에 따라 달라집니다. S3 Storage Lens 지표의 경우 `report_time` 필드, Amazon SageMaker Catalog 메타데이터의 경우 `snapshot_time` 필드입니다. 테이블은 AWS에서 관리하므로 사용할 필드를 지정할 수 없습니다.
+ 데이터를 테이블로 내보낼 때 지연이 발생하면 레코드가 예상보다 빨리 만료될 수 있습니다. 따라서 테이블의 만료 설정에서 보존 기간에 버퍼를 추가하여 잠재적 수집 지연을 고려하는 것이 좋습니다.
+ 레코드는 만료 대상이 된 후 24\$148시간 이내에 만료되고 제거됩니다. 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` 파일에서 또는 브랜치 또는 태그 기반 보존을 포함한 `ALTER TABLE SET TBLPROPERTIES` SQL 명령을 통해 Iceberg 테이블 속성으로 구성한 보존 값을 지원하지 않습니다. 스냅샷 관리는 브랜치 또는 태그 기반 보존 정책을 구성하거나 `metadata.json` 파일에 `PutTableMaintenanceConfiguration` API를 통해 구성된 값보다 긴 보존 정책을 구성할 때 비활성화됩니다. 이러한 경우 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는 128MB의 parquets row-group-default 크기를 적용합니다.