S3 Metadata 테이블로 데이터 발견하기
S3 Metadata 테이블로 데이터 발견하기 (Discovering your data with S3 Metadata tables)
Amazon S3 Metadata는 범용 버킷의 객체에 대한 메타데이터를 자동으로 캡처해 조회 가능한 읽기 전용·완전 관리형 Apache Iceberg 테이블에 저장함으로써 데이터 발견을 앞당겨 줘요. 이 읽기 전용 테이블을 *메타데이터 테이블(metadata tables)*이라고 불러요. 범용 버킷에 객체가 추가, 업데이트, 제거되면 S3 Metadata가 해당 메타데이터 테이블을 자동으로 새로고침해 최신 변경 사항을 반영해요.
출처: 문서
본문
기본적으로 S3 Metadata는 다음 세 가지 유형의 메타데이터를 제공해요.
- 시스템 정의 메타데이터(예: 객체의 생성 시간과 스토리지 클래스)
- 커스텀 객체 메타데이터(예: 객체 업로드 시 포함된 태그, 주석, 사용자 정의 메타데이터)
- 이벤트 메타데이터(예: 객체가 업데이트되거나 삭제된 시점, 요청을 수행한 AWS 계정)
S3 Metadata를 사용하면 S3 객체의 메타데이터를 쉽게 찾고 저장하고 조회할 수 있어서, 비즈니스 분석, 콘텐츠 검색, 인공지능·머신러닝(AI/ML) 모델 학습 등에 사용할 데이터를 빠르게 준비할 수 있어요.
범용 버킷마다 최대 3개의 메타데이터 테이블을 포함하는 메타데이터 테이블 구성을 만들 수 있어요.
- 저널 테이블(Journal table) – 기본적으로 메타데이터 테이블 구성에는 저널 테이블이 포함되며, 버킷의 객체에서 발생하는 이벤트를 캡처해요. 저널 테이블은 데이터에 대한 변경 사항을 거의 실시간으로 기록해서, 버킷에 업로드된 새 데이터를 식별하고 최근 삭제된 객체를 추적하고 수명주기 전환을 모니터링하는 데 도움을 줘요. 저널 테이블은 새 객체와 객체및 해당 메타데이터에 대한 업데이트(
PUT또는DELETE작업이 필요한 업데이트)를 기록해요. 저널 테이블은 메타데이터 테이블 구성을 만든 이후에 발생하는 변경 이벤트(예: 업로드, 업데이트, 삭제)에 대한 메타데이터만 캡처해요. 이 테이블은 조회 가능하므로 단순한 SQL 쿼리로 버킷의 변경 사항을 감사할 수 있어요. 저널 테이블은 각 메타데이터 테이블 구성에 필수예요. (S3 Metadata 초기 릴리스에서는 저널 테이블을 "메타데이터 테이블"이라고 불렀어요.) 저널 테이블에 저장되는 데이터에 대한 자세한 내용은 S3 Metadata 저널 테이블 스키마를 참고하세요. 스토리지 비용을 최소화하기 위해 저널 테이블 레코드 만료를 활성화할 수 있어요. 자세한 내용은 저널 테이블 레코드 만료를 참고하세요. - 라이브 인벤토리 테이블(Live inventory table) – 선택적으로 메타데이터 테이블 구성에 라이브 인벤토리 테이블을 추가할 수 있어요. 라이브 인벤토리 테이블은 버킷의 모든 객체와 해당 버전에 대한 간단하고 조회 가능한 인벤토리를 제공해서 데이터의 최신 상태를 파악할 수 있게 해줘요. 라이브 인벤토리 테이블을 사용해 다양한 워크로드에 처리하려는 객체를 식별함으로써 비즈니스 워크플로와 빅데이터 작업을 단순화하고 가속화할 수 있어요. 예를 들어 라이브 인벤토리 테이블을 조회해 특정 스토리지 클래스에 저장된 모든 객체, 특정 태그가 있는 모든 객체, AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS)로 암호화되지 않은 모든 객체 등을 찾을 수 있어요. 메타데이터 테이블 구성을 위해 라이브 인벤토리 테이블을 활성화하면 테이블은 *백필링(backfilling)*이라는 과정을 거치게 돼요. 이 과정에서 Amazon S3가 범용 버킷을 스캔해 버킷에 존재하는 모든 객체에 대한 초기 메타데이터를 검색해요. 버킷의 객체 수에 따라 이 과정은 수 분(최소 15분)에서 수 시간이 걸릴 수 있어요. 백필링이 끝나면 라이브 인벤토리 테이블 상태가 **백필링(Backfilling)**에서 **활성(Active)**으로 바뀌어요. 백필링이 완료된 후에는 일반적으로 객체에 대한 업데이트가 1시간 이내에 라이브 인벤토리 테이블에 반영돼요. 인벤토리 테이블 백필링에는 요금이 부과돼요. 범용 버킷에 객체가 10억 개를 초과하면 라이브 인벤토리 테이블에 대해 월간 요금도 부과돼요. 자세한 내용은 Amazon S3 요금을 참고하세요. 라이브 인벤토리 테이블에 저장되는 데이터에 대한 자세한 내용은 S3 Metadata 라이브 인벤토리 테이블 스키마를 참고하세요.
- 주석 테이블(Annotation table) – 선택적으로 메타데이터 테이블 구성에 주석 테이블을 추가할 수 있어요. 주석 테이블은 버킷 객체에 대한 최신 주석을 추적하고 주석 콘텐츠를 직접 조회할 수 있게 해줘요. 각 행은 특정 객체 버전에 대한 주석 하나를 나타내요. 주석 테이블을 사용해 주석 값을 기준으로 객체를 발견하고 검색할 수 있어요. 예를 들어 주석 테이블을 조회해 특정 주석 키가 있는 모든 객체를 찾거나, 객체 크기나 키 접두사를 기준으로 조건에 맞는 주석 콘텐츠를 검색하거나, 객체 간 주석을 연관시킬 수 있어요. 주석 테이블 구성에 대한 자세한 내용은 주석 테이블 활성화 또는 비활성화를 참고하세요. 주석 테이블 스키마에 대한 자세한 내용은 S3 Metadata 주석 테이블 스키마를 참고하세요.
메타데이터 테이블은 테이블 형식(tabular) 데이터에 최적화된 스토리지를 제공하는 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 통합에 대한 자세한 내용은 Amazon S3 Tables와 AWS 분석 서비스 통합을 참고하세요.
Apache Spark, Apache Trino 및 Apache Iceberg 형식을 지원하는 기타 애플리케이션으로도 AWS Glue Iceberg REST 엔드포인트, Amazon S3 Tables Iceberg REST 엔드포인트 또는 Apache Iceberg용 Amazon S3 Tables Catalog 클라이언트 카탈로그를 사용해 메타데이터 테이블을 조회할 수 있어요. 메타데이터 테이블 접근에 대한 자세한 내용은 테이블 데이터 접근을 참고하세요.
S3 Metadata 요금은 Amazon S3 요금을 참고하세요.
메타데이터 테이블 작동 방식 (How metadata tables work)
메타데이터 테이블은 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(N. Virginia)(us-east-1)에 있다면, AWS 관리형 테이블 버킷도 US East(N. Virginia)(us-east-1)에 생성되며 다음과 같은 ARN을 가져요.
arn:aws:s3tables:us-east-1:123456789012:bucket/aws-s3
기본적으로 AWS 관리형 테이블 버킷은 Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)로 암호화돼요. 첫 번째 메타데이터 구성을 만든 후에는 AWS 관리형 테이블 버킷의 기본 암호화 설정을 AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS)로 변경할 수 있어요. 자세한 내용은 AWS 관리형 테이블 버킷 암호화와 테이블 버킷에서 AWS KMS 키를 사용한 서버 측 암호화(SSE-KMS) 지정을 참고하세요.
AWS 관리형 테이블 버킷 내에서 구성의 메타데이터 테이블은 일반적으로 다음과 같은 명명 형식의 네임스페이스에 저장돼요.
b_general-purpose-bucket-name
참고
- 범용 버킷 이름에 마침표가 포함된 경우 네임스페이스 이름에서 마침표가 밑줄(
_)로 변환돼요.- 2018년 3월 1일 이전에 만든 범용 버킷의 이름에는 대문자와 밑줄이 포함될 수 있고 최대 255자일 수도 있어요. 버킷 이름에 이런 특징이 있다면 메타데이터 테이블 네임스페이스 형식이 달라져요. 범용 버킷 이름은
b_접두사가 붙고 63자로 잘린 다음 모두 소문자로 변환되고 해시가 접미사로 붙어요.
메타데이터 테이블은 다음 Amazon 리소스 이름(ARN) 형식을 가지며, 여기에는 메타데이터 테이블의 테이블 ID가 포함돼요.
arn:aws:s3tables:region-code:account-id:bucket/aws-s3/table/table-id
예를 들어 US East(N. Virginia) 리전의 메타데이터 테이블 ARN은 다음과 같을 수 있어요.
arn:aws:s3tables:us-east-1:111122223333:bucket/aws-s3/table/a12bc345-67d8-912e-3456-7f89123g4h56
저널 테이블은 journal이라는 이름을, 라이브 인벤토리 테이블은 inventory라는 이름을 가져요.
메타데이터 테이블 구성을 만들 때 AWS 관리형 메타데이터 테이블을 AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS)로 암호화하도록 선택할 수 있어요. SSE-KMS를 사용하려면 범용 버킷과 같은 리전에 고객 관리형 KMS 키를 제공해야 해요. 테이블의 암호화 유형은 테이블 생성 시에만 설정할 수 있어요. AWS 관리형 테이블이 생성된 후에는 암호화 설정을 변경할 수 없어요. 메타데이터 테이블에 SSE-KMS를 지정하려면 특정 권한이 필요해요. 자세한 내용은 SSE-KMS 권한을 참고하세요.
메타데이터 테이블의 암호화 설정은 버킷 수준의 기본 암호화 설정보다 우선해요. 테이블에 암호화를 지정하지 않으면 버킷의 기본 암호화 설정을 상속해요.
AWS 관리형 테이블 버킷은 S3 Tables 할당량(quota)에 포함되지 않아요. AWS 관리형 테이블 버킷 및 AWS 관리형 테이블 작업에 대한 자세한 내용은 AWS 관리형 테이블 버킷 작업을 참고하세요.
메타데이터 테이블 구성에 대한 업데이트를 모니터링하려면 AWS CloudTrail을 사용할 수 있어요. 자세한 내용은 CloudTrail 로깅에서 추적되는 Amazon S3 버킷 수준 작업을 참고하세요.
메타데이터 테이블 유지 관리와 레코드 만료
메타데이터 테이블의 성능을 최상으로 유지하기 위해 Amazon S3는 테이블에 대해 컴팩션(compaction)과 미참조 파일 제거 같은 주기적인 유지 관리 활동을 수행해요. 이러한 유지 관리 활동은 메타데이터 테이블 저장 비용을 최소화하고 쿼리 성능을 최적화하는 데 도움을 줘요. 이 테이블 유지 관리는 자동으로 이루어지므로 별도의 옵트인이나 지속적인 관리가 필요하지 않아요.
참고
- 저널 테이블 또는 인벤토리 테이블 스냅샷의 만료를 제어할 수 없어요. 각 테이블에 대해 Amazon S3는 최대 24시간 동안 최소 1개의 스냅샷을 저장해요.
- 비용을 최소화하려면 저널 테이블 레코드 만료를 구성할 수 있어요. 기본적으로 저널 테이블 레코드는 만료되지 않으며, 저널 테이블 레코드는 최소 7일 동안 보존해야 해요. 자세한 내용은 저널 테이블 레코드 만료를 참고하세요.