Blob Storage 리소스 나열

Blob 서비스 API에는 계정 내의 컨테이너( 컨테이너 나열 작업) 및 컨테이너 내의 Blob( Blob 나열 작업)을 나열하는 작업이 포함됩니다. 이러한 작업에는 주목할 만한 몇 가지 공통적인 기능이 있습니다.

목록 작업은 요청된 목록의 전체 또는 일부를 포함하는 XML 응답을 반환합니다. 작업은 알파벳 순서로 엔터티를 반환합니다.

이 항목에는 다음과 같은 하위 항목이 포함되어 있습니다.

최대 결과 설정

표식을 사용하여 부분 목록 결과 검색

목록 결과 필터링

Blob 네임스페이스 트래버스

XML 응답 형식

최대 결과 설정

목록 작업에 대한 단일 호출에서 반환할 최대 결과 수를 지정하려면 요청 URI에서 매개 변수의 maxresults 값을 지정합니다.

요청에서 최대 결과 수를 지정하지 않았거나 5,000개보다 큰 경우 서버는 최대 5,000개 항목까지 반환합니다. 최대 결과 수를 0보다 작거나 같음으로 지정하면 서비스에서 상태 코드 400(잘못된 요청)을 반환합니다.

표식을 사용하여 부분 목록 결과 검색

특정 리소스에 대해 목록 작업을 처음 수행할 때 응답에 모든 결과가 포함되거나 결과의 하위 집합과 표식 값이 포함될 수 있습니다. 표식 값은 목록이 완료되고 표식이 반환되지 않을 때까지 다음 결과 집합을 반환하기 위해 후속 호출에 전달될 수 있습니다.

마커 값은 XML 응답의 NextMarker 요소에 포함됩니다. NextMarker 요소가 비어 있으면 목록이 완료된 것입니다. 값 NextMarker 은 클라이언트에 불투명한 문자열 값입니다.

후속 작업에 다음 결과 집합을 반환하려면 NextMarker 태그에 반환된 값을 요청 URI의 marker 매개 변수로 전달합니다.

목록 결과 필터링

결과 목록은 prefix 매개 변수를 사용해서 요청에 접두사 문자열을 지정하여 필터링할 수 있습니다. 그런 후 목록 작업은 해당 접두사로 시작하는 이름이 포함된 엔터티를 반환합니다. prefix 매개 변수가 요청 URI에 지정되어 있으면 응답 XML에 접두사 문자가 포함된 Prefix 요소가 포함됩니다. 예를 들어 값이 "c"인 접두사를 지정하면 응답 XML 내에서 반환됩니다 <Prefix>``c``</Prefix> . 예제를 보려면 이 항목의 뒷부 분에 있는 컨테이너 나열 섹션을 참조하세요.

Blob 네임스페이스 트래버스

Blob 나열 작업에는 호출자가 사용자 구성 구분 기호를 사용하여 Blob 네임스페이스를 트래버스할 수 있는 추가 delimiter 매개 변수가 있습니다. 이 구분 기호는 단일 문자이거나 문자열일 수 있습니다. 요청에 이 매개 변수가 포함되면 작업이 BlobPrefix 요소를 반환합니다. 구분 기호 문자가 표시된 위치까지 동일한 하위 문자열로 시작하는 이름의 모든 Blob 대신 BlobPrefix 요소가 반환됩니다. 요소의 BlobPrefix 값은 substring+delimiter입니다. 여기서 부분 문자열 은 하나 이상의 Blob 이름을 시작하는 일반적인 부분 문자열이고 구분 기호구분 기호 매개 변수의 값입니다.

값을 BlobPrefix 사용하여 후속 호출을 수행하여 이 접두사로 시작하는 Blob을 나열할 수 있습니다. 후속 요청에 대한 값을 BlobPrefix 지정합니다. 이렇게 하면 파일 시스템에서와 같이 blob의 가상 계층을 트래버스할 수 있습니다. 예제를 보려면 이 항목의 뒷부분에 있는 구분 기호를 사용하여 Blob 나열 을 참조하세요.

반환되는 각 BlobPrefix 값은 최대 결과에 포함됩니다.

또한 요청에 구분 기호를 포함하는 경우 Blob 스냅샷을 나열할 수 없습니다. 매개 변수 값을 delimiter 지정하고 매개 변수도 설정 include=snapshots 하면 Blob 서비스에서 InvalidQueryParameter 오류(HTTP 상태 코드 400 – 잘못된 요청)를 반환합니다.

XML 응답 형식

목록 출력은 XML 문서이며, 형식은 이 항목의 뒷부분에 나오는 코드 예와 비슷합니다.

응답 본문에는 요청 URI에 지정된 모든 매개 변수의 값이 응답 본문 내의 요소로 포함됩니다.

DateTime 요소에 Last-Modified 반환되는 값은 RFC 1123 형식입니다. 값에 대한 DateTime 자세한 내용은 헤더의 날짜/시간 값 표현을 참조하세요.

컨테이너 나열

이 예제에서는 두 개의 컨테이너를 반환하는 목록 작업의 결과를 보여 줍니다. 요청 URI는 다음과 같습니다.

GET https://myaccount.blob.core.windows.net/?comp=list&prefix=c&maxresults=3&include=metadata  

목록을 필터링하기 위해 접두사 "c"가 지정되었습니다. 반환할 최대 결과 수는 3으로 설정되었습니다. 태그는 NextMarker 후속 목록 작업에서 반환될 컨테이너의 이름을 표시합니다.

<?xml version="1.0" encoding="utf-8"?>  
<EnumerationResults AccountName="https://myaccount.blob.core.windows.net/">  
  <Prefix>c</Prefix>  
  <MaxResults>3</MaxResults>  
  <Containers>  
    <Container>  
      <Name>container1</Name>  
      <Url>https://myaccount.blob.core.windows.net/container1</Url>  
      <Properties>  
        <Last-Modified>Sun, 27 Sep 2009 18:09:03 GMT</Last-Modified>  
        <Etag>0x8CAE7D0C4AF4487</Etag>  
      </Properties>  
      <Metadata>  
        <Color>orange</Color>  
        <ContainerNumber>01</ContainerNumber>  
        <SomeMetadataName>SomeMetadataValue</SomeMetadataName>  
      </Metadata>  
    </Container>  
    <Container>  
      <Name>container2</Name>  
      <Url>https://myaccount.blob.core.windows.net/container2</Url>  
      <Properties>  
        <Last-Modified>Sun, 27 Sep 2009 17:26:40 GMT</Last-Modified>  
        <Etag>0x8CAE7CAD8C24928</Etag>  
      </Properties>  
      <Metadata>  
        <Color>pink</Color>  
        <ContainerNumber>02</ContainerNumber>  
        <SomeMetadataName>SomeMetadataValue</SomeMetadataName>  
      </Metadata>  
    </Container>  
    <Container>  
      <Name>container3</Name>  
      <Url>https://myaccount.blob.core.windows.net/container3</Url>  
      <Properties>  
        <Last-Modified>Sun, 27 Sep 2009 17:26:40 GMT</Last-Modified>  
        <Etag>0x8CAE7CAD8EAC0BB</Etag>  
      </Properties>  
      <Metadata>  
        <Color>brown</Color>  
        <ContainerNumber>03</ContainerNumber>  
        <SomeMetadataName>SomeMetadataValue</SomeMetadataName>  
      </Metadata>  
    </Container>  
  </Containers>  
  <NextMarker>container4</NextMarker>  
</EnumerationResults>  

Blob 및 스냅샷 나열

이 예제에서는 mycontainer라는 컨테이너에서 Blob 및 스냅샷을 반환하는 목록 작업의 결과를 보여 줍니다. 요청 URI는 다음과 같습니다.

GET https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=list&include=snapshots&include=metadata  

응답에는 blob와 스냅숏이 모두 포함됩니다.

<?xml version="1.0" encoding="utf-8"?>  
<EnumerationResults ContainerName="https://myaccount.blob.core.windows.net/mycontainer">  
  <Blobs>  
    <Blob>  
      <Name>blob1.txt</Name>  
      <Url>https://myaccount.blob.core.windows.net/mycontainer/blob1.txt</Url>  
      <Properties>  
        <Last-Modified>Wed, 09 Sep 2009 09:20:02 GMT</Last-Modified>  
        <Etag>0x8CBFF45D8A29A19</Etag>  
        <Content-Length>100</Content-Length>  
        <Content-Type>text/html</Content-Type>  
        <Content-Encoding />  
        <Content-Language>en-US</Content-Language>  
        <Content-MD5 />  
        <Cache-Control>no-cache</Cache-Control>  
        <BlobType>BlockBlob</BlobType>  
        <LeaseStatus>unlocked</LeaseStatus>  
      </Properties>  
      <Metadata>  
        <Color>blue</Color>  
        <BlobNumber>01</BlobNumber>  
        <SomeMetadataName>SomeMetadataValue</SomeMetadataName>  
      </Metadata>  
    </Blob>  
    <Blob>  
      <Name>blob2.txt</Name>  
      <Snapshot>2009-09-09T09:20:03.0427659Z</Snapshot>  
      <Url>https://myaccount.blob.core.windows.net/mycontainer/blob2.txt?snapshot=2009-09-09T09%3a20%3a03.0427659Z</Url>  
      <Properties>  
        <Last-Modified>Wed, 09 Sep 2009 09:20:02 GMT</Last-Modified>  
        <Etag>0x8CBFF45D8B4C212</Etag>  
        <Content-Length>5000</Content-Length>  
        <Content-Type>application/octet-stream</Content-Type>  
        <Content-Encoding>gzip</Content-Encoding>  
        <Content-Language />  
        <Content-MD5 />  
        <Cache-Control />  
        <BlobType>BlockBlob</BlobType>  
      </Properties>  
      <Metadata>  
        <Color>green</Color>  
        <BlobNumber>02</BlobNumber>  
        <SomeMetadataName>SomeMetadataValue</SomeMetadataName>  
        <x-ms-invalid-name>nasdf$@#$$</x-ms-invalid-name>  
      </Metadata>  
    </Blob>  
    <Blob>  
      <Name>blob2.txt</Name>  
      <Snapshot>2009-09-09T09:20:03.1587543Z</Snapshot>  
      <Url>https://myaccount.blob.core.windows.net/mycontainer/blob2.txt?snapshot=2009-09-09T09%3a20%3a03.1587543Z</Url>  
      <Properties>  
        <Last-Modified>Wed, 09 Sep 2009 09:20:02 GMT</Last-Modified>  
        <Etag>0x8CBFF45D8B4C212</Etag>  
        <Content-Length>5000</Content-Length>  
        <Content-Type>application/octet-stream</Content-Type>  
        <Content-Encoding>gzip</Content-Encoding>  
        <Content-Language />  
        <Content-MD5 />  
        <Cache-Control />  
        <BlobType>BlockBlob</BlobType>  
      </Properties>  
      <Metadata>  
        <Color>green</Color>  
        <BlobNumber>02</BlobNumber>  
        <SomeMetadataName>SomeMetadataValue</SomeMetadataName>  
      </Metadata>  
    </Blob>  
    <Blob>  
      <Name>blob2.txt</Name>  
      <Url>https://myaccount.blob.core.windows.net/mycontainer/blob2.txt</Url>  
      <Properties>  
        <Last-Modified>Wed, 09 Sep 2009 09:20:02 GMT</Last-Modified>  
        <Etag>0x8CBFF45D8B4C212</Etag>  
        <Content-Length>5000</Content-Length>  
        <Content-Type>application/octet-stream</Content-Type>  
        <Content-Encoding>gzip</Content-Encoding>  
        <Content-Language />  
        <Content-MD5 />  
        <Cache-Control />  
        <BlobType>BlockBlob</BlobType>  
        <LeaseStatus>unlocked</LeaseStatus>  
      </Properties>  
      <Metadata>  
        <Color>green</Color>  
        <BlobNumber>02</BlobNumber>  
        <SomeMetadataName>SomeMetadataValue</SomeMetadataName>  
      </Metadata>  
    </Blob>  
    <Blob>  
      <Name>blob3.txt</Name>  
      <Url>https://myaccount.blob.core.windows.net/mycontainer/blob3.txt</Url>  
      <Properties>  
        <Last-Modified>Wed, 09 Sep 2009 09:20:03 GMT</Last-Modified>  
        <Etag>0x8CBFF45D911FADF</Etag>  
        <Content-Length>16384</Content-Length>  
        <Content-Type>image/jpeg</Content-Type>  
        <Content-Encoding />  
        <Content-Language />  
        <Content-MD5 />  
        <Cache-Control />  
        <x-ms-blob-sequence-number>3</x-ms-blob-sequence-number>  
        <BlobType>PageBlob</BlobType>  
        <LeaseStatus>locked</LeaseStatus>  
      </Properties>  
      <Metadata>  
        <Color>yellow</Color>  
        <BlobNumber>03</BlobNumber>  
        <SomeMetadataName>SomeMetadataValue</SomeMetadataName>  
      </Metadata>  
    </Blob>  
  </Blobs>  
  <NextMarker />   
</EnumerationResults>  

구분 기호를 사용하여 Blob 나열

이 예제에서는 mycontainer라는 컨테이너 아래에 Blob을 반환하는 목록 작업의 결과를 보여 줍니다. 요청 URI는 다음과 같습니다.

GET https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=list&delimiter=/&maxresults=4  

이 경우 매개 변수는 delimiter/지정됩니다. 응답 본문에는 구분 기호를 포함하여 동일한 부분 문자열로 시작하는 Blob 그룹을 나타내는 태그가 포함 BlobPrefix 됩니다.

컨테이너 아래의 예제 blob는 다음과 같습니다. 가 4로 설정되었기 때문에 MaxResults 처음 4개는 첫 번째 목록 작업에서 반환됩니다. myfolder/blobA.txtmyfolder/blobB.txt 태그의 응답 본문에 BlobPrefix 함께 그룹화되며 반환된 엔터티 수 측면에서 단일 Blob으로 계산됩니다. 이 접두사로 시작하는 Blob을 반환하려면 접두사 매개 변수가 myfolder/로 설정된 후속 요청을 수행합니다.

  • blob1.txt

  • blob2.txt

  • myfolder/blobA.txt

  • myfolder/blobB.txt

  • newblob1.txt

  • newblob2.txt

반환할 다음 Blob은 newblob2.txt. Blob 이름은 태그에 NextMarker 제공됩니다.

<?xml version="1.0" encoding="utf-8"?>  
<EnumerationResults ContainerName="https://myaccount.blob.core.windows.net/mycontainer">  
  <MaxResults>4</MaxResults>  
  <Blobs>  
    <Blob>  
      <Name>blob1.txt</Name>  
      <Url>https://myaccount.blob.core.windows.net/mycontainer/blob1.txt</Url>  
      <Properties>  
        <Last-Modified>Sun, 27 Sep 2009 18:41:57 GMT</Last-Modified>  
        <Etag>0x8CAE7D55D050B8B</Etag>  
        <Content-Length>8</Content-Length>  
        <Content-Type>text/html</Content-Type>  
        <Content-Encoding />  
        <Content-Language>en-US</Content-Language>  
        <Content-MD5 />  
        <Cache-Control>no-cache</Cache-Control>  
        <BlobType>BlockBlob</BlobType>  
        <LeaseStatus>unlocked</LeaseStatus>  
      <Properties>  
    </Blob>  
    <Blob>  
      <Name>blob2.txt</Name>  
      <Url>https://myaccount.blob.core.windows.net/mycontainer/blob2.txt</Url>  
      <Properties>  
        <Last-Modified>Sun, 27 Sep 2009 12:18:50 GMT</Last-Modified>  
        <Etag>0x8CAE7D55CF6C339</Etag>  
        <Content-Length>100</Content-Length>  
        <Content-Type>text/html</Content-Type>  
        <Content-Encoding />  
        <Content-Language>en-US</Content-Language>  
        <Content-MD5 />  
        <Cache-Control>no-cache</Cache-Control>  
        <BlobType>BlockBlob</BlobType>  
        <LeaseStatus>unlocked</LeaseStatus>  
      </Properties>  
    </Blob>  
    <BlobPrefix>  
      <Name>myfolder/</Name>  
    </BlobPrefix>  
    <Blob>  
      <Name>newblob1.txt</Name>  
      <Url>https://myaccount.blob.core.windows.net/mycontainer/newblob1.txt</Url>  
      <Properties>  
        <Last-Modified>Sun, 27 Sep 2009 16:31:57 GMT</Last-Modified>  
        <Etag>0x8CAE7D55CF6C339</Etag>  
        <Content-Length>25</Content-Length>  
        <Content-Type>text/html</Content-Type>  
        <Content-Encoding />  
        <Content-Language>en-US</Content-Language>  
        <Content-MD5 />  
        <Cache-Control>no-cache</Cache-Control>  
        <BlobType>BlockBlob</BlobType>  
        <LeaseStatus>unlocked</LeaseStatus>  
      </Properties>  
    </Blob>  
  </Blobs>  
  <NextMarker>newblob2.txt</NextMarker>  
</EnumerationResults>  

루트 컨테이너의 Blob 나열

루트 컨테이너에 Blob을 나열하려면 다음 URL을 사용할 수 있습니다.

https://myaccount.blob.core.windows.net/$root?restype=container&comp=list&maxresults=10  

루트 컨테이너에 Blob을 나열할 때 XML 응답 본문에는 Blob URL 의 필드에 루트 컨테이너에 대한 명시적 참조가 포함되지 않습니다. 다음은 루트 컨테이너의 Blob을 나열하는 샘플 응답입니다.

  
<?xml version="1.0" encoding="utf-8"?>  
<EnumerationResults ContainerName="https://myaccount.blob.core.windows.net/%24root">  
  <MaxResults>10</MaxResults>  
  <Blobs>  
    <Blob>  
      <Name>rootblob1.txt</Name>  
      <Url>https://myaccount.blob.core.windows.net/rootblob1.txt</Url>  
      <Properties>  
        <Last-Modified>Sun, 27 Sep 2009 18:41:48 GMT</Last-Modified>  
        <Etag>0x8CAE7D55D050B8B</Etag>  
        <Content-Length>25</Content-Length>  
        <Content-Type>text/html</Content-Type>  
        <Content-Encoding />  
        <Content-Language>en-US</Content-Language>  
        <Content-MD5 />  
        <Cache-Control>no-cache</Cache-Control>  
        <BlobType>BlockBlob</BlobType>  
        <LeaseStatus>unlocked</LeaseStatus>  
      </Properties>  
   </Blob>  
    <Blob>  
      <Name>rootblob2.txt</Name>  
      <Url>https://myaccount.blob.core.windows.net/rootblob2.txt</Url>  
      <Properties>  
        <Last-Modified>Sun, 27 Sep 2009 18:45:57 GMT</Last-Modified>  
        <Etag>0x8CAE7D55CF6C339</Etag>  
        <Content-Length>14</Content-Length>  
        <Content-Type>text/plain; charset=UTF-8</Content-Type>  
        <Content-Encoding />  
        <Content-Language>en-US</Content-Language>  
        <Content-MD5 />  
        <Cache-Control>no-cache</Cache-Control>  
        <BlobType>BlockBlob</BlobType>  
        <LeaseStatus>unlocked</LeaseStatus>  
      </Properties>  
    </Blob>  
  </Blobs>  
</EnumerationResults>  
  

참고 항목

컨테이너 나열
Blob 나열
Blob service 개념
Azure Storage 서비스에 대한 버전 관리