메뉴
Amazon Simple Storage Service
개발자 안내서 (API Version 2006-03-01)

객체 키와 메타데이터

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

객체 키

객체를 만들 때 버킷 내 각 객체의 고유한 식별자로 키 이름을 지정합니다. 예를 들어 Amazon S3 콘솔(AWS Management Console 참조)에서 버킷을 선택하면 버킷 내 각 객체의 목록이 표시됩니다. 이 이름들이 객체의 키입니다. 키 이름은 최대 1024바이트 길이의 UTF-8 인코딩을 사용하는 Unicode 문자열입니다.

참고

Amazon S3에 대한 워크로드가 초당 100회 이상의 요청을 생성할 경우 성능을 극대화하기 위해 Amazon S3 키 명명 지침을 따라야 합니다. 자세한 내용은 요청 빈도 및 성능 고려 사항 단원을 참조하십시오.

객체 키 명명 지침

객체 키 이름으로 임의의 모든 UTF-8 문자 조합을 사용할 수 있지만, 다음 키 명명 모범 사례에 따르면 다른 애플리케이션과의 호환성을 극대화할 수 있습니다.  애플리케이션에 따라 특수 문자를 서로 다르게 파싱할 수 있으며, 다음 지침에 따르면 DNS, 웹 안전 문자, XML 파싱 프로그램 및 기타 API의 호환성을 극대화할 수 있습니다.

사용 가능 문자

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

  • 영숫자 문자[0-9a-zA-Z]

  • !, -, _, ., *, ', (, 및 )의 특수 문자

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

  • 4my-organization

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

  • videos/2014/birthday/video1.wmv

Amazon S3 데이터 모델은 단조로운 구조를 가지고 있습니다. 사용자가 버킷을 만들면 이 버킷에 객체가 저장됩니다. 하위 버킷 또는 하위 폴더의 계층 구조가 없지만 키 이름 접두사와 구분 기호를 사용하여 Amazon S3 콘솔과 같이 논리적인 계층 구조를 만들 수 있습니다. Amazon S3 콘솔은 폴더 개념을 지원합니다. 버킷(admin-created)에 다음과 같은 객체 키를 가진 4개의 객체가 있다고 가정해 보겠습니다.

Development/Projects1.xls

Finance/statement1.pdf

Private/taxdocument.pdf

s3-dg.pdf

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

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

참고

Amazon S3는 버킷과 객체를 지원하며 Amazon S3에는 계층이 없습니다. 그러나 객체 키 이름의 접두사와 구분 기호로 Amazon S3 콘솔과 AWS SDK에서 계층 및 폴더 개념을 구현할 수 있습니다.

특별한 처리가 필요한 문자

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

앰퍼샌드("&")

달러("$")

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

'At' 기호("@")

등호("=")

세미콜론(";")

콜론(":")

더하기("+")

공백 - 경우에 따라 중요한 의미가 있는 공백의 순서가 사라질 수 있음(특히 연속 공백)

쉼표(",")

물음표("?")

 

피해야 하는 문자

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

백슬래시("\")

왼쪽 중괄호("{")

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

캐럿("^")

오른쪽 중괄호("}")

백분율 문자("%")

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

오른쪽 대괄호("]")

인용 부호

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

왼쪽 대괄호("[")

물결표("~")

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

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

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

객체 메타데이터

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

시스템 정의 메타데이터

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

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

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

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

    객체를 만들 때 이러한 시스템 메타데이터 항목의 값을 구성하고, 언제든지 필요할 때마다 값을 업데이트할 수 있습니다. 스토리지 클래스에 대한 자세한 내용은 스토리지 클래스를 참조하십시오. 서버 측 암호화에 대한 자세한 정보는 암호화를 사용하여 데이터 보호 단원을 참조하십시오.

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

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

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

아니요
Content-MD5 객체의 base64 인코딩 128비트 MD5 DIGEST 아니요
x-amz-server-side-encryption 객체의 서버 측 암호화 사용 여부 및 암호화 방식(AWS Key Management Service(SSE-KMS) 또는 AWS가 관리하는 암호화(SSE-S3))을 나타냅니다. 자세한 내용은 서버 측 암호화를 사용하여 데이터 보호를 참조하십시오.
x-amz-version-id 객체 버전. 버전 관리를 사용하는 버킷의 경우 Amazon S3는 버킷에 추가된 객체에 버전 번호를 지정합니다. 자세한 내용은 버전 관리 사용을 참조하십시오. 아니요
x-amz-delete-marker 버전 관리를 사용하는 버킷의 경우 이 마커는 객체가 삭제 마커인지 여부를 나타냅니다. 아니요
x-amz-storage-class 객체 저장에 사용된 스토리지 클래스. 자세한 내용은 스토리지 클래스를 참조하십시오.
x-amz-website-redirect-location 관련 객체에 대한 요청을 동일한 버킷의 다른 객체 또는 외부 URL로 리디렉션합니다. 자세한 내용은 (선택 사항) 웹 페이지 리디렉션 구성을 참조하십시오.
x-amz-server-side-encryption-aws-kms-key-id x-amz-server-side-encryption이 표시되고 aws:kms 값이 지정된 경우 이 값은 객체에 사용된 Key Management Service(KMS) 마스터 암호화 키의 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는 사용자 정의 메타데이터 키를 소문자로 저장합니다. REST 및 UTF-8을 사용할 때, 그리고 POST를 통해 SOAP 또는 브라우저 기반 업로드를 사용할 때 각 키-값 페어는 US-ASCII 형식이어야 합니다.

참고

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

이 페이지에서: