S3 메타데이터를 사용하여 데이터 검색 가속화 - Amazon Simple Storage Service

S3 메타데이터를 사용하여 데이터 검색 가속화

Amazon S3 Metadata는 범용 버킷의 객체에 대한 메타데이터를 자동으로 캡처하고, 쿼리할 수 있는 읽기 전용 완전관리형 Apache Iceberg 테이블에 저장하여 데이터 검색을 가속화합니다. 이러한 읽기 전용 테이블을 메타데이터 테이블이라고 합니다. 객체가 범용 버킷에 추가, 업데이트 및 제거되면 S3 Metadata는 해당 메타데이터 테이블을 자동으로 새로 고쳐 최신 변경 사항을 반영합니다.

기본적으로 S3 메타데이터는 세 가지 유형의 메타데이터를 제공합니다.

  • 객체의 생성 시간 및 스토리지 클래스와 같은 시스템 정의 메타데이터

  • 객체 업로드 중에 포함된 태그 및 사용자 정의 메타데이터와 같은 사용자 지정 메타데이터

  • 객체가 업데이트되거나 삭제되는 시기 및 요청을 수행한 AWS 계정과 같은 이벤트 메타데이터

S3 메타데이터를 사용하면 S3 객체에 대한 메타데이터를 쉽게 찾고 저장하고 쿼리할 수 있으므로 비즈니스 분석, 콘텐츠 검색, 인공 지능 및 기계 학습(AI/ML) 모델 훈련 등에 사용할 데이터를 빠르게 준비할 수 있습니다.

각 범용 버킷에 대해 두 개의 보완적 메타데이터 테이블이 포함된 메타데이터 테이블 구성을 만들 수 있습니다.

  • 저널 테이블 - 기본적으로 메타데이터 테이블 구성에는 버킷의 객체에 대해 발생하는 이벤트를 캡처하는 저널 테이블이 포함되어 있습니다. 저널 테이블은 거의 실시간으로 데이터에 대한 변경 사항을 기록하므로 버킷에 업로드된 새 데이터를 식별하고, 최근에 삭제된 객체를 추적하고, 수명 주기 전환을 모니터링하는 등의 작업을 수행할 수 있습니다. 저널 테이블은 새 객체를 기록하고 객체 및 해당 메타데이터를 업데이트합니다(PUT 또는 DELETE 작업이 필요한 업데이트).

    저널 테이블은 메타데이터 테이블 구성을 만든 후에 발생하는 변경 이벤트(예: 업로드, 업데이트 및 삭제)에 대한 메타데이터만 캡처합니다. 이 테이블은 쿼리가 가능하므로 간단한 SQL 쿼리를 통해 버킷의 변경 사항을 감사할 수 있습니다.

    저널 테이블은 각 메타데이터 테이블 구성에 필요합니다. (S3 Metadata의 최초 릴리스에서는 저널 테이블을 "메타데이터 테이블"이라고 했습니다.)

    저널 테이블에 저장되는 데이터에 대한 자세한 내용은 S3 Metadata 저널 테이블 스키마 섹션을 참조하세요.

    스토리지 비용을 최소화하려면 저널 테이블 레코드 만료를 활성화하도록 선택할 수 있습니다. 자세한 내용은 저널 테이블 레코드 만료시키기 섹션을 참조하세요.

  • 라이브 인벤토리 테이블 - 선택적으로 메타데이터 테이블 구성에 라이브 인벤토리 테이블을 추가할 수 있습니다. 라이브 인벤토리 테이블은 버킷의 모든 객체와 해당 버전에 대한 간단하고 쿼리 가능한 인벤토리를 제공하므로 데이터의 최신 상태를 확인할 수 있습니다.

    라이브 인벤토리 테이블을 사용하면 다양한 워크로드에 대해 처리하려는 객체를 식별하여 비즈니스 워크플로와 빅 데이터 작업을 간소화하고 속도를 높일 수 있습니다. 예를 들어 라이브 인벤토리 테이블을 쿼리하여 특정 스토리지 클래스에 저장된 모든 객체, 특정 태그가 있는 모든 객체, AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS)로 암호화되지 않은 모든 객체 등을 찾을 수 있습니다.

    메타데이터 테이블 구성에 대해 라이브 인벤토리 테이블을 활성화하면 테이블은 채우기라는 프로세스를 거치며, 이 과정에서 Amazon S3는 범용 버킷을 스캔하여 버킷에 있는 모든 객체의 초기 메타데이터를 검색합니다. 버킷의 객체 수에 따라 이 프로세스는 몇 분(최소 15분)에서 몇 시간이 걸릴 수 있습니다. 채우기 프로세스가 완료되면 라이브 인벤토리 테이블의 상태가 채우기에서 활성으로 변경됩니다. 채우기가 완료되면 객체에 대한 업데이트는 일반적으로 1시간 이내에 라이브 인벤토리 테이블에 반영됩니다.

    인벤토리 테이블 채우기에 대한 요금이 부과됩니다. 범용 버킷에 10억 개 이상의 객체가 있는 경우 라이브 인벤토리 테이블에 대한 월별 요금도 부과됩니다. 자세한 내용은 Amazon S3 요금을 참조하세요.

    라이브 인벤토리 테이블에 저장되는 데이터에 대한 자세한 내용은 S3 Metadata 라이브 인벤토리 테이블 스키마 섹션을 참조하세요.

메타데이터 테이블은 테이블 형식 데이터에 최적화된 스토리지를 제공하는 AWS 관리형 S3 테이블 버킷에 저장됩니다. 메타데이터를 쿼리하기 위해 테이블 버킷을 Amazon SageMaker Lakehouse와 통합할 수 있습니다. AWS Glue Data Catalog 및 AWS Lake Formation을 사용하는 이 통합을 통해 AWS 분석 서비스는 테이블 데이터를 자동으로 검색하고 액세스할 수 있습니다.

테이블 버킷이 AWS Glue Data Catalog와 통합되면 Amazon Athena, Amazon EMR, Amazon Redshift와 같은 AWS 분석 서비스를 사용하여 메타데이터 테이블을 직접 쿼리할 수 있습니다. 여기에서 Amazon QuickSight를 사용하여 쿼리 데이터로 대화형 대시보드를 만들 수 있습니다. AWS 관리형 S3 테이블 버킷을 Amazon SageMaker Lakehouse와 통합하는 방법에 대한 자세한 내용은 AWS 분석 서비스와 Amazon S3 Tables 통합 섹션을 참조하세요.

AWS Glue Iceberg REST 엔드포인트, Amazon S3 Tables Iceberg REST 엔드포인트 또는 Apache Iceberg 클라이언트 카탈로그용 Amazon S3 Tables Catalog를 사용하여 Apache Iceberg 형식을 지원하는 Apache Spark, Apache Trino 및 기타 애플리케이션을 사용하여 메타데이터 테이블을 쿼리할 수도 있습니다. 메타데이터 테이블에 액세스하는 방법에 대한 자세한 내용은 테이블 데이터에 액세스 섹션을 참조하세요.

S3 메타데이터 요금은 Amazon S3 요금을 참조하세요.

메타데이터 테이블 작동 방식

메타데이터 테이블은 Amazon S3에서 관리하며 Amazon S3 외부의 IAM 위탁자는 수정할 수 없습니다. 하지만 메타데이터 테이블을 삭제할 수 있습니다. 따라서 메타데이터 테이블은 읽기 전용이므로 범용 버킷의 콘텐츠를 올바르게 반영할 수 있습니다.

AWS 관리형 메타데이터 테이블에 객체 메타데이터를 생성하고 저장하려면 범용 버킷에 대한 메타데이터 테이블 구성을 만듭니다. Amazon S3는 범용 버킷에서 구성이 활성 상태인 한 메타데이터 테이블을 지속적으로 업데이트하여 데이터에 대한 최신 변경 사항을 반영하도록 설계되었습니다.

메타데이터 테이블 구성을 만들려면 메타데이터 테이블을 만들고 관리하는 데 필요한 AWS Identity and Access Management(IAM) 권한이 있는지 확인하세요. 자세한 내용은 메타데이터 테이블 구성에 대한 권한 설정 섹션을 참조하세요.

메타데이터 테이블 스토리지, 구성 및 암호화

메타데이터 테이블 구성을 만들 때 메타데이터 테이블이 AWS 관리형 테이블 버킷에 저장됩니다. 계정 및 동일한 리전의 모든 메타데이터 테이블 구성은 단일 AWS 관리형 테이블 버킷에 저장됩니다. 이러한 AWS 관리형 테이블 버킷의 이름은 aws-s3이며 다음 Amazon 리소스 이름(ARN) 형식을 갖습니다.

arn:aws:s3tables:region:account_id:bucket/aws-s3

예를 들어 계정 ID가 123456789012이고 범용 버킷이 미국 동부(버지니아 북부)(us-east-1)에 있는 경우 AWS 관리형 테이블 버킷도 미국 동부(버지니아 북부)(us-east-1)에서 만들어지며 ARN은 다음과 같습니다.

arn:aws:s3tables:us-east-1:123456789012:bucket/aws-s3

기본적으로 AWS 관리형 테이블 버킷은 Amazon S3 관리형 암호화 키를 사용한 서버 측 암호화(SSE-S3)를 사용하여 암호화됩니다. 첫 번째 메타데이터 구성을 만든 후 AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS)를 사용하도록 AWS 관리형 테이블 버킷의 기본 암호화 설정을 지정할 수 있습니다. 자세한 내용은 Encryption for AWS managed table buckets테이블 버킷에서 AWS KMS 키(SSE-KMS)를 사용한 서버 측 암호화 지정 섹션을 참조하세요.

AWS 관리형 테이블 버킷 내에서 구성의 메타데이터 테이블은 일반적으로 다음 이름 지정 형식의 네임스페이스에 저장됩니다.

b_general-purpose-bucket-name

참고
  • 범용 버킷 이름에 마침표가 포함된 경우 네임스페이스 이름에서 마침표가 밑줄(_)로 변환됩니다.

  • 범용 버킷이 2018년 3월 1일 이전에 만들어진 경우 이름에 대문자와 밑줄이 포함될 수 있으며 최대 255자일 수 있습니다. 버킷 이름에 이러한 특성이 있는 경우 메타데이터 테이블 네임스페이스의 형식이 다릅니다. 범용 버킷 이름에는 b_ 접두사가 붙고, 63자로 잘리고, 모두 소문자로 변환되고, 해시 접미사가 붙습니다.

메타데이터 테이블의 Amazon 리소스 이름(ARN) 형식은 다음과 같습니다.

arn:aws:s3tables:region-code:account-id:bucket/aws-s3/table/metadata_table_name

저널 테이블의 이름은 journal이고 라이브 인벤토리 테이블의 이름은 inventory입니다.

메타데이터 테이블 구성을 만들 때 AWS Key Management Service(AWS KMS) 키(SSE-KMS)를 사용한 서버 측 암호화로 AWS 관리형 메타데이터 테이블을 암호화하도록 선택할 수 있습니다. SSE-KMS를 사용하기로 선택한 경우 범용 버킷과 동일한 리전에 고객 관리형 KMS 키를 제공해야 합니다. 테이블을 만드는 중에만 테이블에 대한 암호화 유형을 설정할 수 있습니다. AWS 관리형 테이블이 만들어진 후에는 암호화 설정을 변경할 수 없습니다. 메타데이터 테이블에 SSE-KMS를 지정하려면 특정 권한이 있어야 합니다. 자세한 내용은 Permissions for SSE-KMS를 참조하세요.

메타데이터 테이블의 암호화 설정이 기본 버킷 수준 암호화 설정보다 우선합니다. 테이블에 암호화 설정을 지정하지 않으면 버킷의 기본 암호화 설정을 상속합니다.

AWS 관리형 테이블 버킷은 S3 Tables 할당량에 포함되지 않습니다. AWS 관리형 테이블 버킷 및 AWS 관리형 테이블 작업에 대한 자세한 내용은 Working with AWS managed table buckets를 참조하세요.

메타데이터 테이블 구성에 대한 업데이트를 모니터링하려면 AWS CloudTrail을 사용할 수 있습니다. 자세한 내용은 CloudTrail 로깅을 통해 추적되는 Amazon S3 버킷 수준 작업 섹션을 참조하세요.

메타데이터 테이블 유지 관리 및 레코드 만료

메타데이터 테이블 성능을 최상의 상태로 유지하기 위해 Amazon S3는 테이블에 대해 압축 및 참조되지 않은 파일 제거와 같은 유지 관리 활동을 정기적으로 수행합니다. 이러한 유지 관리 활동은 메타데이터 테이블 저장 비용을 최소화하고 쿼리 성능을 최적화하는 데 도움이 됩니다. 이 테이블 유지 관리는 자동으로 수행되므로 사용자가 옵트인하거나 지속적으로 관리할 필요가 없습니다.

참고
  • 저널 테이블 또는 인벤토리 테이블 스냅샷의 만료를 제어할 수 없습니다. 각 테이블에 대해 Amazon S3는 최대 24시간 동안 최소 1개의 스냅샷을 저장합니다.

  • 비용을 최소화하기 위해 저널 테이블 레코드 만료를 구성할 수 있습니다. 기본적으로 저널 테이블 레코드는 만료되지 않으며, 저널 테이블 레코드는 최소 7일 동안 유지되어야 합니다. 자세한 내용은 저널 테이블 레코드 만료시키기 섹션을 참조하세요.