객체 메타데이터 작업
객체를 업로드할 때 Amazon S3에서 객체 메타데이터를 설정할 수 있습니다. 객체 메타데이터는 이름-값 페어의 집합입니다. 객체를 업로드한 후에는 객체 메타데이터를 변경할 수 없습니다. 객체 메타데이터를 수정할 수 있는 유일한 방법은 객체 복사본을 만든 후 메타데이터를 설정하는 것입니다.
객체를 생성할 때 버킷의 각 객체를 고유하게 식별하는 키 이름도 지정합니다. 객체 키(또는 키 이름)는 Amazon S3 버킷 내 객체를 고유하게 식별합니다. 자세한 내용은 Amazon S3 객체 이름 지정 섹션을 참조하세요.
Amazon S3에는 시스템 정의 메타데이터와 사용자 정의 메타데이터라는 두 가지 종류의 메타데이터가 있습니다. 아래 섹션에서는 시스템 정의 메타데이터와 사용자 정의 메타데이터에 대한 자세한 정보를 제공합니다. Amazon S3 콘솔을 사용한 메타데이터 편집에 대한 자세한 내용은 Amazon S3 콘솔에서 객체 메타데이터 편집 섹션을 참조하십시오.
시스템 정의 객체 메타데이터
버킷에 저장된 각 객체에 대해 Amazon S3는 시스템 메타데이터의 조합을 유지합니다. Amazon S3는 필요할 경우 이 시스템 메타데이터를 처리합니다. 예를 들어 Amazon S3는 객체 생성일과 크기 메타데이터를 유지하며 객체 관리의 일환으로 이 정보를 사용합니다.
시스템 메타데이터에는 다음 2가지 카테고리가 있습니다.
-
시스템이 제어함 - 객체 생성일과 같은 메타데이터는 시스템이 제어하므로 Amazon S3만 값을 수정할 수 있습니다.
-
사용자가 제어함 - 그 외, 객체에 대해 구성된 스토리지 클래스, 객체의 서버 측 암호화 사용 여부와 같은 시스템 메타데이터는 사용자가 값을 제어할 수 있는 시스템 메타데이터의 예입니다. 웹 사이트로 구성된 버킷에서는 다른 페이지 또는 외부 URL로 페이지 요청을 리디렉션해야 할 때가 있습니다. 이 경우 웹 페이지는 버킷의 객체가 됩니다. Amazon S3는 페이지 리디렉션 값을 시스템 메타데이터로 저장하며 그 값은 사용자가 제어합니다.
객체를 만들 때 이러한 시스템 메타데이터 항목의 값을 구성하고, 언제든지 필요할 때마다 값을 업데이트할 수 있습니다. 스토리지 클래스에 대한 자세한 정보는 Amazon S3 스토리지 클래스 이해 및 관리를 참조하십시오.
Amazon S3는 AWS KMS 키를 사용하여 Amazon S3 객체를 암호화합니다. AWS KMS는 객체 데이터만 암호화합니다. 체크섬은 지정된 알고리즘과 함께 객체 메타데이터의 일부로 저장됩니다. 객체에 서버 측 암호화가 요청된 경우 체크섬은 암호화된 형식으로 저장됩니다. 서버 측 암호화에 대한 자세한 정보는 암호화로 데이터 보호 섹션을 참조하십시오.
참고
PUT
요청 헤더는 크기가 8KB 이하여야 합니다. PUT
요청 헤더에 포함되는 시스템 정의 메타데이터의 크기는 2KB 이하여야 합니다. 시스템 정의 메타데이터의 크기는 US-ASCII로 인코딩된 각 키와 값의 바이트 수를 더하여 측정됩니다.
다음 표에 시스템 정의 메타데이터의 목록과 사용자의 업데이트 여부가 정리되어 있습니다.
이름 | 설명 | 사용자의 값 수정 여부 |
---|---|---|
Date |
현재 날짜 및 시간. | 아니요 |
Cache-Control |
캐싱 정책을 지정하는 데 사용되는 일반 헤더 필드입니다. | 예 |
Content-Disposition |
객체 표현 정보입니다. | 예 |
Content-Length |
객체 크기(바이트). | 아니요 |
Content-Type |
객체 유형입니다. | 예 |
Last-Modified |
객체 생성일 또는 최종 수정일 중 최근 날짜. 멀티파트 업로드의 경우 객체 생성 날짜는 멀티파트 업로드 시작 날짜입니다. |
아니요 |
ETag |
객체의 특정 버전을 나타내는 엔터티 태그(ETag). 멀티파트 업로드로 업로드되지 않고 암호화되지 않거나 Amazon S3 관리형 키(SSE-S3)를 사용하는 서버 측 암호화를 통해 암호화된 객체의 경우 ETag는 데이터의 MD5 다이제스트입니다. | 아니요 |
x-amz-server-side-encryption |
객체에 대한 서버 측 암호화 사용 여부 및 해당 암호화 유형이 AWS Key Management Service(AWS KMS) 키(SSE-KMS)와 Amazon S3 관리형 암호화 키(SSE-S3)중 무엇인지를 나타내는 헤더. 자세한 내용은 서버 측 암호화를 사용하여 데이터 보호 단원을 참조하십시오. | 예 |
x-amz-checksum-crc32 , x-amz-checksum-crc32c ,
x-amz-checksum-sha1 , x-amz-checksum-sha256 |
객체의 체크섬 또는 다이제스트를 포함하는 헤더. 대부분의 경우 Amazon S3에서 사용하도록 하는 체크섬 알고리즘에 따라 이러한 헤더 중 하나가 한 번에 설정됩니다. 체크섬 알고리즘 선택에 대한 자세한 내용은 객체 무결성 확인 단원을 참조하십시오. | 아니요 |
x-amz-version-id |
객체 버전. 버전 관리를 사용하는 버킷의 경우 Amazon S3는 버킷에 추가된 객체에 버전 ID를 지정합니다. 자세한 내용은 S3 버전 관리로 여러 버전의 객체 유지 단원을 참조하십시오. | 아니요 |
x-amz-delete-marker |
객체가 삭제 마커인지를 나타내는 부울 마커. 이 마커는 버전 관리가 활성화된 버킷에서만 사용됩니다. | 아니요 |
x-amz-storage-class |
객체 저장에 사용된 스토리지 클래스. 자세한 내용은 Amazon S3 스토리지 클래스 이해 및 관리 단원을 참조하십시오. | 예 |
x-amz-website-redirect-location |
관련 객체에 대한 요청을 동일한 버킷의 다른 객체 또는 외부 URL로 리디렉션하는 헤더. 자세한 내용은 (선택 사항) 웹 페이지 리디렉션 구성 단원을 참조하십시오. | 예 |
x-amz-server-side-encryption-aws-kms-key-id |
객체를 암호화하는 데 사용된 AWS KMS 대칭 암호화 KMS 키의 ID를 나타내는 헤더. 이 헤더는 x-amz-server-side-encryption 헤더가 존재하고 값이 aws:kms 인 경우에만 사용됩니다. |
예 |
x-amz-server-side-encryption-customer-algorithm |
고객 제공 암호화 키(SSE-C)를 사용하는 서버 측 암호화가 활성화되었는지를 나타내는 헤더. 자세한 내용은 고객 제공 키(SSE-C)로 서버 측 암호화 사용 단원을 참조하십시오. | 예 |
x-amz-tagging |
객체에 대한 태그 집합입니다. 태그 집합은 URL 쿼리 매개 변수로 인코딩되어야 합니다. | 예 |
사용자 정의 객체 메타데이터
객체를 업로드할 때 객체에 메타데이터를 지정할 수 있습니다. 객체를 생성하기 위해 PUT
또는 POST
요청을 전송할 때 필요할 경우 이름-값(키-값)의 페어로 이 정보를 제공할 수 있습니다. REST API를 사용하여 객체를 업로드할 때 선택 사항으로 제공되는 사용자 정의 메타데이터의 이름은 다른 HTTP 헤더와 구분할 수 있도록 x-amz-meta-
로 시작해야 합니다. REST API를 사용하여 객체를 검색하면 이 접두사가 반환됩니다. SOAP API를 사용하여 객체를 업로드할 때는 접두사가 필요 없습니다. SOAP API를 사용하여 객체를 검색하면 객체 업로드 시 사용한 API에 관계없이 접두사가 제거됩니다.
참고
HTTP를 통한 SOAP 지원은 중단되었지만 SOAP는 HTTPS를 통해 계속해서 사용할 수 있습니다. Amazon S3의 새로운 기능들은 SOAP에서 지원되지 않습니다. SOAP를 사용하는 대신 REST API 또는 AWS SDK를 사용하는 것이 좋습니다.
REST API를 통해 메타데이터를 검색할 때 Amazon S3는 동일한 이름(대소문자 무시)을 가진 헤더를 쉼표로 구분되는 목록으로 결합합니다. 일부 메타데이터에 인쇄되지 않는 문자가 포함될 경우 반환되지 않습니다. 대신 인쇄할 수 없는 메타데이터 항목의 수를 나타내는 값과 함께 x-amz-missing-meta
헤더가 반환됩니다. HeadObject
작업은 객체 자체를 반환하지 않고 객체에서 메타데이터를 검색합니다. 이 작업은 객체의 메타데이터에만 관심이 있는 경우에 유용합니다. HEAD
를 사용하려면 객체에 대한 READ
액세스 권한이 있어야 합니다. 자세한 내용은 Amazon Simple Storage Service API Reference의 HeadObject를 참조하십시오.
사용자 정의 메타데이터는 키-값 페어의 집합입니다. Amazon S3는 사용자 정의 메타데이터 키를 소문자로 저장합니다.
Amazon S3는 메타데이터 값에 임의의 유니코드 문자를 허용합니다.
이러한 메타데이터 값의 표시 문제를 방지하려면 REST를 사용할 경우 US-ASCII 문자를 사용하고, SOAP를 사용하거나 POST
를 통해 브라우저 기반 업로드를 사용할 경우 UTF-8을 사용해야 합니다.
메타데이터 값에 US-ASCII 문자 이외의 문자를 사용하는 경우, 제공된 유니코드 문자열에서 US-ASCII 문자 이외의 문자가 있는지 검사합니다. 이러한 헤더의 값은 저장 및 인코딩하기 전에 RFC 2047
다음은 예입니다.
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로 인코딩된 각 키와 값의 바이트 수를 더하여 계산합니다.
객체를 업로드한 이후에 객체의 복사본을 만들어서 수정하고 이전 객체를 교체하거나 새 버전을 만드는 방법으로 객체의 메타데이터를 변경하는 내용은 Amazon S3 콘솔에서 객체 메타데이터 편집 섹션을 참조하십시오.