객체 메타데이터 작업 - Amazon Simple Storage Service

객체 메타데이터 작업

객체를 업로드할 때 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 ReferenceHeadObject를 참조하십시오.

사용자 정의 메타데이터는 키-값 페어의 집합입니다. Amazon S3는 사용자 정의 메타데이터 키를 소문자로 저장합니다.

Amazon S3는 메타데이터 값에 임의의 유니코드 문자를 허용합니다.

이러한 메타데이터 값의 표시 문제를 방지하려면 REST를 사용할 경우 US-ASCII 문자를 사용하고, SOAP를 사용하거나 POST를 통해 브라우저 기반 업로드를 사용할 경우 UTF-8을 사용해야 합니다.

메타데이터 값에 US-ASCII 문자 이외의 문자를 사용하는 경우, 제공된 유니코드 문자열에서 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로 인코딩된 각 키와 값의 바이트 수를 더하여 계산합니다.

객체를 업로드한 이후에 객체의 복사본을 만들어서 수정하고 이전 객체를 교체하거나 새 버전을 만드는 방법으로 객체의 메타데이터를 변경하는 내용은 Amazon S3 콘솔에서 객체 메타데이터 편집 섹션을 참조하십시오.