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

접두사와 구분 기호를 사용하여 계층적 구조로 키 나열

접두사와 구분 기호 파라미터는 나열 작업에서 반환되는 결과의 종류를 제한합니다. 접두사는 특정 접두사로 시작하는 키만 포함되도록 결과를 제한하고, 구분 기호는 접두사가 같은 키끼리 분류하여 결과를 나열합니다.

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

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

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

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

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

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

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

구분 기호를 사용한 나열 요청은 각 수준별로 계층 구조를 탐색할 수 있어 하위 수준의 수백만 키를 건너뛸 수 있습니다. 예를 들어 다음과 같은 키의 ExampleBucket 버킷이 있다고 가정해 보겠습니다.

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는 이러한 키를 그룹화하여 photos/ 접두사 값을 가진 단일 CommonPrefixes 요소를 반환합니다. 이는 해당 키의 시작 부분부터 지정된 구분 기호의 첫 번째 발생 지점까지의 범위에서 가져온 하위 문자열입니다.

Copy
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Name>ExampleBucket</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>