BLOB ストレージ リソースの一覧表示
BLOB サービス API には、アカウント内のコンテナーを一覧表示するための操作 ( コンテナーの一覧表示 操作) とコンテナー内の BLOB ( Blob の一覧表示 操作) が含まれます。 これらの操作には注目に値する共通機能があります。
リスト操作は、要求されたリストのすべてまたは一部を含む XML 応答を返します。 返されるエンティティはアルファベット順に並んでいます。
このトピックは、次のサブトピックに分かれています。
最大結果を設定する
リスト操作の 1 回の呼び出しで返される結果の最大数を指定するには、要求 URI の パラメーターの maxresults
値を指定します。
要求で結果の最大数が指定されていない場合、または 5,000 を超える場合、サーバーは最大 5,000 個のアイテムを返します。 結果の最大数を 0 以下に指定すると、サービスは状態コード 400 (無効な要求) を返します。
マーカーを使用して部分的なリストの結果を取得する
特定のリソースに対して初めて一覧表示操作を実行すると、応答にすべての結果が含まれる場合や、結果のサブセットとマーカー値が含まれる場合があります。 マーカー値を後続の呼び出しに渡して、リストが完了し、マーカーが返されないまで、次の結果セット (次の結果セット) を返すことができます。
マーカー値は XML 応答の NextMarker
要素に含まれています。
NextMarker
要素が空になった時点で一覧は完了です。 の NextMarker
値は、クライアントに対して不透明な文字列値です。
後続の操作で次の結果セットを取得するには、NextMarker
タグに返された値を要求 URI の marker
パラメーターとして渡します。
リストの結果をフィルター処理する
結果一覧をフィルター処理するには、prefix
パラメーターを使用して、要求のプレフィックス文字列を指定します。 一覧操作を実行すると、指定したプレフィックスで名前が始まるエンティティが返されます。 要求 URI に prefix
パラメーターを指定すると、1 文字以上のプレフィックスを保持する Prefix
要素が応答 XML に追加されます。 たとえば、"c" の値を持つプレフィックスを指定すると、応答 XML 内でが返されます <Prefix>``c``</Prefix>
。 例については、このトピックで後述する「 コンテナーの一覧表示 」セクションを参照してください。
BLOB 名前空間を走査する
List Blobs 操作には、ユーザーが構成した区切り記号を使用して呼び出し元が BLOB 名前空間を走査できるようにする追加delimiter
のパラメーターがあります。 区切り記号には単一文字または文字列を使用できます。 要求にこのパラメーターが含まれている場合、この操作によって BlobPrefix
要素が返されます。 区切り文字が出現するまで、同じサブ文字列で名前が始まるすべての BLOB の代わりに BlobPrefix
要素が返されます。 要素の BlobPrefix
値は substring+delimiter で、 substring は 1 つ以上の BLOB 名を開始する共通の部分文字列であり、 delimiter は delimiter パラメーターの値です。
の BlobPrefix
値を使用して、後続の呼び出しを行って、このプレフィックスで始まる BLOB を一覧表示できます。 後続の要求の BlobPrefix
の値を指定します。 この方法で、BLOB の仮想階層をファイル システムと同様にスキャンできます。 例については、このトピックで後述 する「区切り記号を使用して BLOB を一覧表示 する」を参照してください。
返される各 BlobPrefix
は、最大結果にカウントされることに注意してください。
また、要求に区切り記号を含める場合は、BLOB スナップショットを一覧表示できないことに注意してください。 パラメーターの値 delimiter
を指定し、パラメーターも設定 include=snapshots
した場合、BLOB サービスは InvalidQueryParameter エラー (HTTP 状態コード 400 – 無効な要求) を返します。
XML 応答形式
一覧の出力は、このトピックで後述するコード例と同様の形式の XML ドキュメントです。
応答本文には、要求 URI で応答本文内の要素として指定されたすべてのパラメーターの値が含まれます。
要素でLast-Modified
返される値は DateTime
RFC 1123 形式です。 値の詳細 DateTime
については、「 ヘッダーでの日付/時刻値の表現」を参照してください。
コンテナーの一覧表示
この例では、2 つのコンテナーを返す一覧表示操作の結果を示します。 要求 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
パラメーターは として /
指定されます。 応答本文には、 タグが BlobPrefix
含まれています。これは、区切り記号を含め、同じ部分文字列で始まる BLOB のグループを表します。
コンテナー内のサンプル BLOB は次のとおりです。 が 4 に設定されているため MaxResults
、最初の 4 つは最初の一覧表示操作で返されます。
myfolder/blobA.txt と myfolder/blobB.txt はタグの応答本文でBlobPrefix
グループ化され、返されるエンティティの数に関して 1 つの BLOB としてカウントされることに注意してください。 このプレフィックスで始まる BLOB を返すには、prefix パラメーターが 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 サービスのバージョン管理