객체 메타데이터 작업

객체 메타데이터 작업

Amazon S3는 객체에 메타데이터를 붙이는 여러 방법을 제공해요. Annotation은 전용 API 작업으로 최대 1MB의 풍부한 데이터 페이로드를 객체에 붙일 수 있게 해줘요. 객체 태그는 객체를 분류하고 접근을 제어하기 위한 키-값 쌍이에요. 업로드 시점에 사용자 정의 메타데이터를 설정할 수도 있고, Amazon S3가 시스템 정의 메타데이터를 자동으로 유지해요.

객체를 만들 때 객체 키(또는 키 이름)를 지정하며, 이는 버킷에서 객체를 고유하게 식별해요. 업로드 시점에 사용자 정의 메타데이터도 설정할 수 있어요.

업로드 후에는 이 사용자 정의 메타데이터를 수정할 수 없어요. 수정하는 유일한 방법은 객체 복사본을 만들어 메타데이터를 설정하는 거예요.

출처: 문서

본문

사용자 지정 객체 메타데이터 (Custom object metadata)

사용자 지정 객체 메타데이터는 내가 제어하는 메타데이터예요. 애플리케이션에 의미 있는 객체 정보를 저장하는 데 사용할 수 있어요. Amazon S3는 annotation, 객체 태그, 사용자 정의 메타데이터의 세 가지 사용자 지정 메타데이터 유형을 지원해요.

Annotation — 업로드 후 어떤 Amazon S3 객체에든 붙일 수 있는 이름이 있는 데이터 페이로드예요. 각 annotation은 AI 생성 출력, 분류 결과, 처리 기록 같은 최대 1MB의 UTF-8 텍스트를 저장할 수 있어요. 객체 자체를 수정하지 않고 annotation을 생성·검색·나열·삭제할 수 있어요.

객체 태그 (Object tags) — 객체를 분류·정리·접근 제어하는 데 사용할 수 있는 키-값 쌍이에요. 각 객체에는 최대 10개의 태그를 붙일 수 있어요. IAM·버킷 정책, S3 Lifecycle 규칙, 비용 할당 보고서에서 태그를 사용할 수 있어요.

사용자 정의 메타데이터 (User-defined metadata) — 객체를 업로드할 때 객체에 메타데이터를 지정할 수 있어요. 객체를 만드는 PUT 또는 POST 요청을 보낼 때 이 선택적 정보를 이름-값(키-값) 쌍으로 제공해요.

REST API로 객체를 업로드할 때, 사용자 정의 메타데이터 이름은 다른 HTTP 헤더와 구분되도록 x-amz-meta-로 시작해야 해요. REST API로 객체를 검색하면 이 접두사가 반환돼요. SOAP API로 업로드할 때는 접두사가 필요하지 않지만, SOAP API로 검색하면 접두사가 제거돼요.

참고: Amazon S3용 SOAP API는 신규 고객에게 제공되지 않으며 2025년 8월 31일에 수명 종료(EOL)를 앞두고 있어요. REST API나 AWS SDK를 사용할 것을 권장해요.

REST API로 메타데이터를 검색할 때 Amazon S3는 같은 이름의 헤더(대소문자 무시)를 쉼표로 구분된 목록으로 결합해요. 일부 메타데이터에 출력 불가능한 문자가 있으면 반환되지 않고, 대신 x-amz-missing-meta 헤더에 출력 불가능한 메타데이터 항목 수가 반환돼요. HeadObject 작업은 객체 자체를 반환하지 않고 메타데이터만 검색해요. 객체의 메타데이터에만 관심이 있을 때 유용해요. HEAD를 사용하려면 객체에 대한 READ 권한이 있어야 해요.

사용자 정의 메타데이터는 키-값 쌍의 집합이며, Amazon S3는 사용자 정의 메타데이터 키를 소문자로 저장해요. 메타데이터 값에는 임의의 Unicode 문자를 사용할 수 있어요. 값 표시와 관련된 문제를 피하려면 REST에서는 US-ASCII 문자를, POST를 통한 SOAP 또는 브라우저 기반 업로드에서는 UTF-8을 사용하는 것이 좋아요.

비 US-ASCII 문자를 메타데이터 값에 사용할 때, 제공된 Unicode 문자열에서 비 US-ASCII 문자가 검사돼요. 이런 헤더의 값은 저장 전에 RFC 2047에 따라 문자 디코딩되고, 반환 전에 메일 안전하게 RFC 2047로 인코딩돼요. 문자열에 US-ASCII 문자만 있으면 그대로 표시돼요.

예시:

PUT /Key HTTP/1.1
Host: amzn-s3-demo-bucket.s3.amazonaws.com
x-amz-meta-nonascii: ÄMÄZÕÑ S3

HEAD /Key HTTP/1.1
Host: amzn-s3-demo-bucket.s3.amazonaws.com
x-amz-meta-nonascii: =?UTF-8?B?w4PChE3Dg8KEWsODwpXDg8KRIFMz?=

PUT /Key HTTP/1.1
Host: amzn-s3-demo-bucket.s3.amazonaws.com
x-amz-meta-ascii: AMAZONS3

HEAD /Key HTTP/1.1
Host: amzn-s3-demo-bucket.s3.amazonaws.com
x-amz-meta-ascii: AMAZONS3

참고: PUT 요청 헤더는 8KB로 제한돼요. PUT 요청 헤더 안에서 사용자 정의 메타데이터는 2KB로 제한돼요. 사용자 정의 메타데이터의 크기는 각 키와 값의 UTF-8 인코딩 바이트 수의 합으로 측정돼요.

업로드된 후 객체 복사본을 만들어 수정하고 이전 객체를 교체하거나 새 버전을 만들어 메타데이터를 변경하는 방법은 콘솔의 "객체 메타데이터 편집" 문서를 참고하세요.

S3 Metadata 사용 — S3 객체의 메타데이터를 쉽게 찾고, 저장하고, 조회하려면 S3 Metadata를 사용할 수 있어요. S3 Metadata를 사용하면 비즈니스 분석, 콘텐츠 검색, AI/ML 모델 학습 등에 쓸 데이터를 빠르게 준비할 수 있어요. S3 Metadata는 일반 목적 버킷의 객체 메타데이터를 자동으로 캡처해 읽기 전용의 완전 관리형 Apache Iceberg 테이블에 저장해 데이터 검색을 가속화해요. 이 읽기 전용 테이블을 메타데이터 테이블이라고 해요. S3 Metadata는 시스템 정의 메타데이터(생성 시간, 스토리지 클래스 등)와 사용자 지정 메타데이터(태그, 사용자 정의 메타데이터, annotation)를 제공하며, 객체가 업데이트되거나 삭제될 때의 이벤트 메타데이터와 요청한 AWS 계정도 제공해요. 메타데이터 테이블은 탭형 데이터에 최적화된 S3 table bucket에 저장되며, Amazon Athena, Amazon Redshift, Amazon QuickSight 같은 AWS 분석 서비스와 통합해 조회할 수 있어요.

시스템 정의 객체 메타데이터 (System-defined object metadata)

버킷에 저장된 각 객체에 대해 Amazon S3는 시스템 메타데이터 집합을 유지해요. 시스템 제어(예: 객체 생성 날짜 — Amazon S3만 변경 가능)와 사용자 제어(예: 객체에 구성된 스토리지 클래스, 서버 측 암호화 활성화 여부)의 두 범주가 있어요. 웹사이트로 구성된 버킷에서 페이지 리다이렉트 값도 제어할 수 있는 시스템 메타데이터로 저장돼요.

참고: PUT 요청 헤더는 8KB로 제한되며, 그 안의 시스템 정의 메타데이터는 2KB로 제한돼요.

시스템 정의 메타데이터 목록과 수정 가능 여부:

이름 설명 사용자가 값을 수정할 수 있나요?
Date 현재 날짜와 시간. 아니요
Cache-Control 캐싱 정책을 지정하는 일반 헤더 필드. 예
Content-Disposition 객체 표시 정보. 예
Content-Encoding 객체 데이터에 적용된 콘텐츠 인코딩(압축 등). 예
Content-Length 바이트 단위 객체 크기. 아니요
Content-Type 객체 유형. 예
Last-Modified 객체 생성 날짜 또는 마지막 수정 날짜 중 최신. 멀티파트 업로드의 경우 멀티파트 업로드 시작 날짜. 아니요
ETag 객체의 특정 버전을 나타내는 엔티티 태그(ETag). 멀티파트 업로드가 아니고 암호화되지 않았거나 SSE-S3로 암호화된 객체의 ETag는 데이터의 MD5 다이제스트. 아니요
x-amz-server-side-encryption 객체에 서버 측 암호화가 활성화되었는지, SSE-KMS인지 SSE-S3인지 나타내는 헤더. 예
x-amz-checksum-crc64nvme, x-amz-checksum-crc32, x-amz-checksum-crc32c, x-amz-checksum-sha1, x-amz-checksum-sha256 객체의 체크섬 또는 다이제스트를 담는 헤더. 지시한 체크섬 알고리즘에 따라 한 번에 최대 하나의 헤더만 설정. 아니요
x-amz-checksum-type 파트 수준 체크섬을 결합해 멀티파트 객체의 객체 수준 체크섬을 만드는 방법을 결정하는 체크섬 유형. 예
x-amz-version-id 객체 버전. 버킷에서 버전 관리를 활성화하면 Amazon S3가 버킷에 추가된 객체에 버전 ID를 할당. 아니요
x-amz-delete-marker 객체가 삭제 마커인지 나타내는 부울 마커. 버전 관리가 활성화된 버킷에서만 사용. 아니요
x-amz-storage-class 객체 저장에 사용되는 스토리지 클래스. 예
x-amz-website-redirect-location 관련 객체에 대한 요청을 같은 버킷의 다른 객체 또는 외부 URL로 리다이렉트하는 헤더. 예
x-amz-server-side-encryption-aws-kms-key-id 객체를 암호화하는 데 사용된 AWS KMS 대칭 암호화 키의 ID를 나타내는 헤더. x-amz-server-side-encryption 헤더가 aws:kms 값일 때만 사용. 예
x-amz-server-side-encryption-customer-algorithm 고객 제공 암호화 키(SSE-C)를 사용한 서버 측 암호화가 활성화되었는지 나타내는 헤더. 예
x-amz-tagging 객체의 태그 세트. URL 쿼리 파라미터로 인코딩되어야 함. 예

더 알아보기 (Learn more)