접두어를 사용한 객체 구성 - Amazon Simple Storage Service

접두어를 사용한 객체 구성

접두사를 사용하여 Amazon S3 버킷에 저장할 데이터를 구성할 수 있습니다. 접두사는 객체 키 이름의 시작 부분에 있는 문자열입니다. 접두사는 임의의 길이일 수 있지만 객체 키 이름의 최대 길이(1,024바이트)를 초과할 수 없습니다. 접두사를 디렉터리와 비슷한 방식으로 데이터를 구성하는 방법으로 생각할 수 있습니다. 그러나 접두사는 디렉터리가 아닙니다.

접두사로 검색하면 지정된 접두사로 시작하는 키로 결과가 제한됩니다. 구분 기호를 사용하면 목록 작업이 공통 접두사를 공유하는 모든 키를 단일 요약 목록 결과로 롤업합니다.

접두사와 구분 기호 파라미터의 목적은 키를 계층적 구조로 정렬하여 탐색할 수 있도록 하는 것입니다. 그러려면 먼저 슬래시(/)와 같이 버킷에서 키 이름에는 사용되지 않을 구분 기호를 선택합니다. 다른 문자를 구분 기호로 사용할 수 있습니다. 슬래시(/) 문자에 특별한 점은 없지만 매우 일반적인 접두사 구분 기호입니다. 그런 다음 각 계층을 구분 기호로 분리하여 각 수준별로 모든 계층이 포함된 키 이름을 구성합니다.

예를 들어, 도시에 대한 정보를 저장할 경우 대륙, 국가 및 주를 기준으로 도시를 구성할 것입니다. 이러한 이름에는 보통 문장 부호가 사용되지 않으므로 슬래시(/)를 구분 기호로 선택할 수 있습니다. 다음 예제는 슬래시(/) 구분 기호의 사용 방법을 보여줍니다.

  • 유럽/프랑스/누벨아키텐/보르도

  • 북미/캐나다/퀘벡/몬트리올

  • 북미/미국/워싱턴/벨뷰

  • 북미/미국/워싱턴/시애틀

이런 식으로 전세계의 모든 도시를 저장한 경우 계층 구분 없이 각 키 네임스페이스를 일괄 관리하기에는 많은 어려움이 있을 것입니다. 나열 작업에 PrefixDelimiter를 사용하면 앞서 만든 계층 구조를 사용하여 데이터를 나열할 수 있습니다. 예를 들어, 미국의 모든 주를 나열하려면 Delimiter='/'Prefix='North America/USA/'를 설정합니다. 데이터가 저장된 캐나다의 모든 지방을 나열하려면 Delimiter='/'Prefix='North America/Canada/'를 설정합니다.

접두사 및 구분 기호를 사용한 객체 나열

구분 기호를 사용한 나열 요청을 실행하는 경우 각 수준별로 계층 구조를 탐색할 수 있어 하위 수준의 수백만 키를 건너뛸 수 있습니다. 예를 들어 다음 키가 있는 버킷(DOC-EXAMPLE-BUCKET)이 있다고 가정합니다.

sample.jpg

photos/2006/January/sample.jpg

photos/2006/February/sample2.jpg

photos/2006/February/sample3.jpg

photos/2006/February/sample4.jpg

이 예제 버킷에서 루트 수준에는 sample.jpg 객체만 있습니다. 버킷의 루트 수준 객체만 나열하려면 슬래시(/) 구분 기호 문자만 사용하여 버킷에 대해 GET 요청을 보냅니다. 그 응답으로 Amazon S3는 / 구분 기호 문자가 포함되지 않은 sample.jpg 객체 키를 반환합니다. 그 외 모든 키에는 구분 기호 문자가 포함되어 있습니다. Amazon S3는 이러한 키를 그룹화하여 CommonPrefixes 접두사 값을 가진 단일 photos/ 요소를 반환합니다. 이는 해당 키의 시작 부분부터 지정된 구분 기호의 첫 번째 발생 지점까지의 범위에서 가져온 하위 문자열입니다.

<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Name>DOC-EXAMPLE-BUCKET</Name> <Prefix></Prefix> <Marker></Marker> <MaxKeys>1000</MaxKeys> <Delimiter>/</Delimiter> <IsTruncated>false</IsTruncated> <Contents> <Key>sample.jpg</Key> <LastModified>2011-07-24T19:39:30.000Z</LastModified> <ETag>&quot;d1a7fb5eab1c16cb4f7cf341cf188c3d&quot;</ETag> <Size>6</Size> <Owner> <ID>75cc57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a</ID> <DisplayName>displayname</DisplayName> </Owner> <StorageClass>STANDARD</StorageClass> </Contents> <CommonPrefixes> <Prefix>photos/</Prefix> </CommonPrefixes> </ListBucketResult>

프로그래밍 방식으로 객체 키를 나열하는 방법에 대한 자세한 내용은 프로그래밍 방식으로 객체 키 나열 섹션을 참조하세요.