객체 키와 메타데이터 - Amazon Simple Storage Service

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

객체 키와 메타데이터

각 Amazon S3 객체는 데이터와 키, 메타데이터로 구성됩니다. 객체 키(또는 키 이름)는 버킷 내 객체를 고유하게 식별합니다. 객체 메타데이터는 이름-값 페어의 집합입니다. 객체를 업로드할 때 객체 메타데이터를 설정할 수 있습니다. 객체를 업로드한 후에는 객체 메타데이터를 변경할 수 없습니다. 객체 메타데이터를 수정할 수 있는 유일한 방법은 객체 복사본을 만든 후 메타데이터를 설정하는 것입니다.

객체 키

객체를 만들 때 버킷 내 각 객체의 고유한 식별자로 키 이름을 지정합니다. 예를 들어, Amazon S3 콘솔에서 버킷을 강조 표시하면 버킷 내 객체의 목록이 표시됩니다. 이러한 이름이 객체 키입니다. 키 이름은 최대 1,024바이트 길이와 UTF-8 인코딩을 사용하는 유니코드 문자의 시퀀스입니다.

더 Amazon S3 데이터 모델은 평면 구조입니다. 버킷을 만들면 버킷에 개체가 저장됩니다. 하위 버킷 또는 하위 폴더의 계층 구조는 없습니다. 그러나 Amazon S3 콘솔과 같이 키 이름 접두사 및 구분 기호를 사용하여 논리적인 계층 구조를 유추할 수 있습니다. Amazon S3 콘솔은 폴더 개념을 지원합니다.

버킷(admin-created)에 다음과 같은 객체 키를 가진 4개의 객체가 있다고 가정해 보겠습니다.

Development/Projects.xls

Finance/statement1.pdf

Private/taxdocument.pdf

s3-dg.pdf

콘솔은 키 이름 접두사(Development/, Finance/Private/) 및 구분 기호('/')를 사용하여 다음과 같은 폴더 구조를 표현합니다.


          Development, Finance 및 Private 폴더가 있는 Amazon S3 콘솔의 스크린샷

s3-dg.pdf 키에는 접두사가 없으므로 이 객체는 버킷의 루트 수준에 표시됩니다. Development/ 폴더를 열면 그 안에 Projects.xlsx 객체가 표시됩니다.


          Development 폴더에서 Projects.xlsx 파일이 선택되어 있는 Amazon S3 콘솔의 스크린샷
참고

Amazon S3는 버킷과 객체를 지원하며 계층 구조가 없습니다. 그러나 객체 키 이름에 접두사와 구분 기호를 사용하면 Amazon S3 콘솔과 AWS SDK에서 계층 구조를 추론하고 폴더 개념을 도입할 수 있습니다.

객체 키 명명 지침

객체 키 이름에 임의의 UTF-8 문자를 사용할 수 있습니다. 하지만 특정 문자는 키 이름에 사용하면 일부 애플리케이션 또는 프로토콜에 문제가 발생할 수도 있습니다. 다음 지침에 따르면 DNS, 웹 안전 문자, XML 파싱 프로그램 및 기타 API의 호환성을 극대화할 수 있습니다.

사용 가능 문자

다음 문자 집합은 일반적으로 키 이름으로 사용해도 문제가 되지 않습니다.

Alphanumeric characters
  • 0~9

  • a-z

  • A-Z

Special characters
  • 슬래시(/)

  • 느낌표(!)

  • 하이픈(-)

  • 밑줄(_)

  • 기간(.)

  • 별표(*)

  • 단일 견적(')

  • 오픈 괄호(()

  • 괄호 닫기())

다음은 유효한 객체 키 이름의 예입니다.

  • 4my-organization

  • my.great_photos-2014/jan/myvacation.jpg

  • videos/2014/birthday/video1.wmv

중요

객체 키 이름이 마침표(.) 또는 2개의 마침표(..)로 끝나는 경우 Amazon S3 콘솔을 사용하여 객체를 다운로드할 수 없습니다. 키 이름이 ""로 끝나는 개체를 다운로드하려면 또는 “..”을 클릭하면 AWS Command Line Interface (AWS CLI), AWS SDK 또는 REST API 중 하나를 사용할 수 있습니다.

특별한 처리가 필요한 문자

키 이름에서 다음 문자는 추가 코드 처리가 필요할 수도 있으며 URL 인코딩되거나 HEX로 참조해야 할 수 있습니다. 이러한 문자 중 일부는 인쇄가 되지 않으며 브라우저에서 처리하지 못할 수 있으므로 특별한 처리가 필요합니다.

  • 앰퍼샌드("&")

  • 달러("$")

  • ASCII 문자 범위 16진수 00~1F(10진수: 0~31) 및 7F(10진수: 127)

  • 'At' 기호("@")

  • 등호("=")

  • 세미콜론(";")

  • 콜론(":")

  • 더하기("+")

  • 공백 – 경우에 따라 중요한 의미가 있는 공백의 순서가 사라질 수 있음(특히 공백이 여러 개 있는 경우)

  • 쉼표(",")

  • 물음표("?")

피해야 하는 문자

모든 애플리케이션 간 일관성을 유지하기 위해 상당한 특수 처리가 필요하므로 다음과 같은 문자는 키 이름에서 사용하지 않는 것이 좋습니다.

  • 백슬래시("\")

  • 왼쪽 중괄호("{")

  • 인쇄되지 않는 ASCII 문자(128~255 10진수)

  • 캐럿("^")

  • 오른쪽 중괄호("}")

  • 백분율 문자("%")

  • 억음 악센트 기호("`")

  • 오른쪽 대괄호("]")

  • 인용 부호

  • '보다 큼' 기호(">")

  • 왼쪽 대괄호("[")

  • 물결표("~")

  • '보다 작은' 기호("<")

  • '파운드' 문자("#")

  • 세로 막대/파이프("|")

객체 메타데이터

시스템 메타데이터사용자 정의 메타데이터라는 두 종류의 메타데이터가 있습니다.

시스템 정의 객체 메타데이터

버킷에 저장된 각 객체에 대해 Amazon S3는 시스템 메타데이터의 조합을 유지합니다. Amazon S3는 필요할 경우 이 시스템 메타데이터를 처리합니다. 예를 들어 Amazon S3는 객체 생성일과 크기 메타데이터를 유지하며 객체 관리의 일환으로 이 정보를 사용합니다.

시스템 메타데이터에는 다음 2가지 카테고리가 있습니다.

  1. 객체 생성 날짜와 같은 메타데이터는 시스템에서 제어하며 Amazon S3만 값을 수정할 수 있습니다.

  2. 그 외, 객체에 대해 구성된 스토리지 클래스, 객체의 서버 측 암호화 사용 여부와 같은 시스템 메타데이터는 사용자가 값을 제어할 수 있는 시스템 메타데이터의 예입니다. 웹 사이트로 구성된 버킷에서는 다른 페이지 또는 외부 URL로 페이지 요청을 리디렉션해야 할 때가 있습니다. 이 경우 웹 페이지는 버킷의 객체가 됩니다. Amazon S3는 페이지 리디렉션 값을 시스템 메타데이터로 저장하며, 그 값은 사용자가 제어합니다.

    객체를 만들 때 이러한 시스템 메타데이터 항목의 값을 구성하고, 언제든지 필요할 때마다 값을 업데이트할 수 있습니다. 스토리지 클래스에 대한 자세한 정보는 Amazon S3 스토리지 클래스를 참조하십시오.

    서버 측 암호화에 대한 자세한 정보는 암호화를 사용하여 데이터 보호 단원을 참조하십시오.

다음 표에 시스템 정의 메타데이터의 목록과 사용자의 업데이트 여부가 정리되어 있습니다.

Name 설명 사용자의 값 수정 여부
날짜 현재 날짜 및 시간. 아니요
Content-Length 객체 크기(바이트 단위) 아니요
콘텐츠 유형 객체 유형
Last-Modified

객체 생성일 또는 최종 수정일 중 최근 날짜

아니요
Content-MD5 객체의 base64 인코딩 128비트 MD5 DIGEST
x-amz-server-side-encryption 객체에 대한 서버 측 암호화 활성화 여부 및 해당 암호화의 AWS Key Management Service(AWS KMS) 또는 Amazon S3 관리형 암호화(SSE-S3) 여부를 나타냅니다. 자세한 정보는 서버 측 암호화를 사용하여 데이터 보호 단원을 참조하십시오.
x-amz-version-id 객체 버전. 버전 관리를 사용하는 버킷의 경우 Amazon 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 x-amz-server-side-encryption이 표시되고 aws:kms 값이 지정된 경우 이 값은 객체에 사용된 AWS KMS 대칭 고객 마스터 키(CMK)의 ID를 나타냅니다.
x-amz-server-side-encryption-customer-algorithm 고객 제공 암호화 키(SSE-C)를 사용하는 서버 측 암호화의 활성화 여부를 나타냅니다. 자세한 정보는 고객 제공 암호화 키(SSE-C)로 서버 측 암호화를 사용하여 데이터 보호 단원을 참조하십시오.

사용자 정의 객체 메타데이터

객체를 업로드할 때 객체에 메타데이터를 지정할 수 있습니다. 객체를 생성하기 위해 PUT 또는 POST 요청을 전송할 때 필요할 경우 이름-값(키-값)의 페어로 이 정보를 제공할 수 있습니다. REST API를 사용하여 객체를 업로드할 때 선택 사항으로 제공되는 사용자 정의 메타데이터의 이름은 다른 HTTP 헤더와 구분할 수 있도록 "x-amz-meta-"로 시작해야 합니다. REST API를 사용하여 객체를 검색하면 이 접두사가 반환됩니다. SOAP API를 사용하여 객체를 업로드할 때는 접두사가 필요 없습니다. SOAP API를 사용하여 객체를 검색하면 객체 업로드 시 사용한 API에 관계없이 접두사가 제거됩니다.

참고

HTTP를 통한 SOAP 지원은 중단되었지만 HTTPS를 통해 계속해서 사용할 수 있습니다. 새로운 Amazon S3 기능은 SOAP에 대해 지원되지 않습니다. REST API 또는 AWS SDK를 사용하는 것이 좋습니다.

REST API를 통해 메타데이터를 검색할 때 Amazon S3는 동일한 이름(대소문자 무시)을 가진 헤더를 쉼표로 구분되는 목록으로 결합합니다. 일부 메타데이터에 인쇄되지 않는 문자가 포함될 경우 반환되지 않습니다. 대신 인쇄할 수 없는 메타데이터 항목의 수를 나타내는 값과 함께 x-amz-missing-meta 헤더가 반환됩니다.

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

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

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

메타데이터 값에 US-ASCII 문자 이외의 문자를 사용하는 경우, 제공된 유니코드 문자열에서 US-ASCII 문자 이외의 문자가 있는지 검사합니다. 문자열에 US-ASCII 문자만 포함되어 있으면 그대로 표시됩니다. 문자열에 US-ASCII 문자 이외의 문자가 포함되어 있으면 먼저 UTF-8을 사용하여 문자 인코딩된 다음 US-ASCII로 인코딩됩니다.

예:

PUT /Key HTTP/1.1 Host: awsexamplebucket1.s3.amazonaws.com x-amz-meta-nonascii: ÄMÄZÕÑ S3 HEAD /Key HTTP/1.1 Host: awsexamplebucket1.s3.amazonaws.com x-amz-meta-nonascii: =?UTF-8?B?w4PChE3Dg8KEWsODwpXDg8KRIFMz?= PUT /Key HTTP/1.1 Host: awsexamplebucket1.s3.amazonaws.com x-amz-meta-ascii: AMAZONS3 HEAD /Key HTTP/1.1 Host: awsexamplebucket1.s3.amazonaws.com x-amz-meta-ascii: AMAZONS3
참고

PUT 요청 헤더는 크기가 8KB 이하여야 합니다. PUT 요청 헤더에 포함되는 사용자 정의 메타데이터의 크기는 2KB 이하여야 합니다. 사용자 정의 메타데이터의 크기는 UTF-8로 인코딩된 각 키와 값의 바이트 수를 더하여 계산합니다.

업로드한 후 객체에 메타데이터를 추가하는 방법에 대한 자세한 내용은 다음을 참조하십시오. S3 개체에 메타데이터를 추가하려면 어떻게 해야 합니까? 에서 Amazon Simple Storage Service 콘솔 사용 설명서.