테이블의 레코드 만료

테이블의 레코드 만료 (Record expiration)

기본적으로 S3 테이블의 레코드는 만료되지 않아요. 테이블의 스토리지 비용을 줄이려면 테이블에 레코드 만료를 켜고 설정할 수 있어요. 이 옵션을 쓰면 레코드가 만료될 때 Amazon S3가 테이블에서 자동으로 해당 레코드를 제거해요.

출처: 문서

본문

테이블에 레코드 만료를 켜면, 레코드가 만료되기 전에 테이블에 보관할 일수를 지정해요. 이 값은 1일부터 2,147,483,647일까지 어떤 숫자든 될 수 있어요. 예를 들어 테이블 레코드를 1년 동안 보관하고 싶으면 365일을 지정하면 돼요. 그러면 레코드가 365일 동안 유지되고, 365일이 지나면 만료되어 Amazon S3가 자동으로 제거해요.

레코드 만료는 특정 AWS 서비스가 만든 데이터 세트를 저장하는 AWS 관리형 테이블에서 켜고 설정할 수 있어요. 현재는 Amazon S3 Storage Lens와 Amazon SageMaker Catalog가 대상이에요. 다른 AWS 관리형 테이블에서는 레코드 만료 옵션을 아직 쓸 수 없어요. 다만 예외가 하나 있어요. Amazon S3 메타데이터 저널 테이블이에요. 저널 테이블은 서비스 수준에서 지정하는 별도의 레코드 만료 설정을 사용해요. 이 유형의 테이블에 레코드 만료를 구성하는 방법에 대한 자세한 내용은 "Expiring journal table records" 문서를 참고하세요. 직접 만든 S3 테이블에서는 레코드 만료 옵션을 쓸 수 없다는 점도 기억해 두세요.

테이블에 레코드 만료를 켠 뒤에는 언제든 다시 끌 수 있어요. 끄면 Amazon S3가 테이블에서 레코드를 만료·제거하는 작업을 멈춰요.

레코드 만료는 어떻게 동작하나요

레코드 만료는 레코드가 테이블의 레코드 만료 설정에서 지정한 일수보다 오래되면 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는 테이블에 대해 다음 작업을 수행하는 레코드 만료 작업(job)을 실행하기 시작해요:

  • 지정한 만료 설정보다 오래된 레코드를 식별해요.
  • 만료된 레코드에 대한 참조를 제외한 새 스냅샷을 만들어요.

레코드 제거는 테이블의 유지 관리 설정에 있는 스냅샷 만료와 참조되지 않은 파일 제거 설정을 기반으로도 이뤄져요. 이 설정에 대해 자세히 알고 싶으면 "Maintenance for tables" 문서를 참고하세요.

경고: Amazon S3는 레코드가 만료 대상이 된 후 24~48시간 내에 레코드를 만료·제거해요. 테이블 레코드는 최신 스냅샷에서 제거돼요. 레코드의 데이터와 스토리지는 테이블 유지 관리 작업을 통해 제거돼요. 테이블 레코드는 만료된 뒤에는 복구할 수 없어요.

테이블의 레코드 만료 구성하기

S3 테이블의 레코드 만료 설정은 Amazon S3 콘솔, Amazon S3 REST API, AWS Command Line Interface(AWS CLI), AWS SDK로 켜고 구성·관리할 수 있어요.

테이블에 대해 이 작업들을 시도하기 전에 다음 AWS Identity and Access Management(IAM) 권한이 있는지 확인하세요:

  • s3tables:GetTableRecordExpirationConfiguration – 테이블의 현재 레코드 만료 설정에 접근할 수 있게 해주는 작업이에요.
  • s3tables:PutTableRecordExpirationConfiguration – 테이블의 레코드 만료 설정을 켜고 구성·끌 수 있게 해주는 작업이에요.
  • s3tables:GetTableRecordExpirationJobStatus – 테이블의 레코드 만료 작업 상태를 모니터링하고 작업 메트릭에 접근할 수 있게 해주는 작업이에요.

다음 절들에서는 Amazon S3 콘솔과 AWS CLI로 테이블의 레코드 만료 설정을 켜고 구성·끄는 방법을 설명해요. Amazon S3 REST API나 AWS SDK로 이 작업들을 하려면 PutTableRecordExpirationConfiguration 작업을 사용하세요. 자세한 내용은 Amazon Simple Storage Service API Reference의 "Developing with Amazon S3" 문서를 참고하세요.

콘솔로 S3 테이블의 레코드 만료 설정을 켜고 구성하려면 다음 단계를 따르세요.

  1. AWS Management Console에 로그인하고 https://console.aws.amazon.com/s3/ 에서 Amazon S3 콘솔을 열어요.
  2. 왼쪽 탐색 창에서 Table buckets를 선택해요.
  3. Table buckets 페이지에서 테이블을 저장한 버킷을 선택해요.
  4. Tables 탭에서 테이블을 선택해요.
  5. Maintenance 탭의 Record expiration 섹션에서 Edit을 선택해요.
  6. Record expiration 항목에서 Enable을 선택해요.
  7. Days after which records expire에 테이블에 레코드를 보관할 일수를 입력해요. 1부터 2,147,483,647 사이의 정수면 돼요. 예를 들어 레코드를 1년 동안 보관하려면 365를 입력해요.

    경고: 테이블 레코드의 적절한 보관 기간을 정할 때, 레코드는 만료된 뒤에는 복구할 수 없다는 점을 기억하세요.

  8. Save changes를 선택해요.

이후에 보관 기간을 바꾸려면 앞의 단계를 반복하면 돼요.

이후에 레코드 만료를 끄려면 1~5단계를 반복한 다음, 6단계에서 Disable을 선택해요. 끝나면 Save changes를 선택해요.

AWS CLI로 S3 테이블의 레코드 만료 설정을 구성·관리하려면 put-table-record-expiration-configuration 명령을 실행하면 돼요.

먼저 테이블에 적용할 레코드 만료 설정이 담긴 JSON 파일을 만들 수 있어요. 다음 예시는 테이블에 레코드 만료를 켜는 JSON 파일 내용이에요. 레코드 보관 기간도 30일로 지정해요. 즉 테이블 레코드가 30일 후에 만료되도록 지정하는 거예요.

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

앞의 예시를 사용할 때는 사용자 입력 자리표시자를 자신의 정보로 바꾸세요.

경고: 테이블 레코드의 적절한 보관 기간을 정할 때, 레코드는 만료된 뒤에는 복구할 수 없다는 점을 기억하세요.

테이블의 레코드 만료를 끄려면 파일에서 status 필드에 disabled를 지정하고 settings 객체는 생략하면 돼요. 예를 들면 다음과 같아요.

{
    "status": "disabled"
}

적용할 설정이 담긴 JSON 파일을 만든 뒤에는 put-table-record-expiration-configuration 명령을 실행해요. table-arn 파라미터에는 테이블의 Amazon Resource Name(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

앞의 예시를 사용할 때는 사용자 입력 자리표시자를 자신의 정보로 바꾸세요.

테이블의 레코드 만료 모니터링하기

S3 테이블의 레코드 만료 작업 상태와 결과를 모니터링하려면 GetTableRecordExpirationJobStatus 작업을 쓰거나, AWS CLI를 쓰는 경우 get-table-record-expiration-job-status 명령을 실행하면 돼요. 요청에는 테이블의 Amazon Resource Name(ARN)을 지정해요.

예를 들어 다음 AWS CLI 명령은 테이블 버킷에 있는 특정 테이블의 레코드 만료 작업 상태를 가져와요. 이 예시를 사용할 때는 사용자 입력 자리표시자를 자신의 정보로 바꾸세요.

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가 테이블에 대해 레코드 만료 작업을 가장 최근에 실행한 시점과 그 실행 상태 같은 세부 정보가 담긴 응답을 받아요. 가장 최근 실행이 성공했다면 응답에는 처리 메트릭도 포함돼요. 예를 들어 제거된 데이터 파일 수, 제거된 레코드 수, 제거된 데이터의 총 크기 같은 값이요. 가장 최근 실행에서 오류가 발생했다면 응답에는 실행이 왜 실패했는지 설명하는 실패 메시지가 포함돼요.

고려 사항

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가 관리하기 때문에 어떤 필드를 쓸지 직접 지정할 수는 없어요.
  • 데이터를 테이블로 내보낼 때 지연이 생기면 레코드가 예상보다 일찍 만료 대상이 될 수 있어요. 그래서 테이블의 만료 설정에서 보관 기간에 여유(buffer)를 더해 잠재적인 수집 지연을 감안할 것을 권장해요.
  • 레코드는 만료 대상이 된 후 24~48시간 내에 만료·제거돼요. Amazon S3는 레코드가 만료 대상이 되는 즉시 만료·제거하지 않아요.
  • 레코드는 만료·제거된 뒤에는 복구할 수 없어요.

더 알아보기 (Learn more)

  • 테이블 유지 관리 (Table maintenance)
  • 고려 사항 및 제한 사항 (Considerations and limitations)