내보내기(0) 인쇄
모두 확장

Blob 리소스 열거

업데이트 날짜: 2013년 4월

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

열거 작업은 요청된 목록의 전체 또는 일부를 포함하는 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 나열(REST API) 작업에는 호출자가 사용자가 구성한 구분 기호를 사용해서 blob 네임스페이스를 트래버스할 수 있게 해주는 추가 delimiter 매개 변수가 포함됩니다. 이 구분 기호는 단일 문자이거나 문자열일 수 있습니다. 요청에 이 매개 변수가 포함되면 작업이 BlobPrefix 요소를 반환합니다. 구분 기호 문자가 표시된 위치까지 동일한 하위 문자열로 시작하는 이름의 모든 Blob 대신 BlobPrefix 요소가 반환됩니다. BlobPrefix 요소의 값은 substring+delimiter이며, 여기서 substring은 하나 이상의 blob 이름으로 시작하는 공통 하위 문자열이고, delimiterdelimiter 매개 변수의 값입니다.

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

반환된 각 BlobPrefix는 최대 결과 수에 합산됩니다.

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

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

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

Last-Modified 요소에 반환된 DateTime 값은 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>

이 예에서는 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>

이 예에서는 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.txtBlobPrefix 태그의 응답 본문에서 하나로 묶여 있으며, 반환된 엔터티 수와 관련하여 단일 blob로 합산됩니다. 이 접두사로 시작하는 blob를 반환하려면 접두사 매개 변수가 myfolder/로 설정된 후속 요청을 수행합니다.

  • blob1.txt

  • blob2.txt

  • myfolder/blobA.txt

  • myfolder/blobB.txt

  • newblob1.txt

  • newblob2.txt

반환할 다음 blob는 NextMarker 태그로 반환되는 newblob2.txt입니다.

<?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를 열거하려면 다음 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>

참고 항목

표시:
© 2014 Microsoft