Get Block List

Get Block List 操作では、ブロック BLOB の一部としてアップロードされたブロックの一覧を取得します。

BLOB に対して保持されるブロック一覧は 2 つあります。

  • コミットされたブロック リスト: Put Block List を使用して特定の BLOB に正常にコミットされた ブロックの一覧

  • コミットされていないブロック リスト:Put Block を使用して BLOB にアップロードされたが、まだコミットされていないブロックの一覧。 これらのブロックは、BLOB との関連で Azure に格納されますが、まだ BLOB の一部にはなっていません。

Get Block List を呼び出して、コミット後のブロック一覧、コミット前のブロック一覧、または両方の一覧を返すことができます。 この操作を呼び出して、スナップショットのコミット後のブロック一覧を取得することもできます。

要求

Get Block List 要求の構成は次のとおりです。 HTTPS が推奨されます。 myaccount をストレージ アカウントの名前に置き換えます。

GET メソッド要求の URI HTTP バージョン
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist

https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist&snapshot=<DateTime>

https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist&versionid=<DateTime>
HTTP/1.1

エミュレートされたストレージ サービス URI

エミューレートされたストレージ サービスに対する要求では、エミュレーターのホスト名と BLOB Service ポートを 127.0.0.1:10000 と指定し、その後にエミューレートされたストレージ アカウント名を指定します。

GET メソッド要求の URI HTTP バージョン
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=blocklist HTTP/1.1

詳細については、「開発とテストにAzure Storage Emulatorを使用する」を参照してください。

URI パラメーター

次の追加パラメーターを要求の URI で指定できます。

URI パラメーター 説明
snapshot 省略可能。 snapshot パラメーターは、BLOB の一覧が存在する場合に、取得する一覧を指定する非透過的な DateTime 値です。 BLOB スナップショットの操作の詳細については、「BLOB の スナップショットの作成」を参照してください。
versionid バージョン 2019-12-12 以降では省略可能です。 versionid パラメーターは不透明 DateTime な値であり、存在する場合は、取得する BLOB のバージョンを指定します。
blocklisttype コミット後のブロックの一覧、コミット前のブロック一覧、または両方の一覧のいずれを返すかを指定します。 有効な値は、committeduncommitted、または all です。 このパラメーターを省略した場合、Get Block List はコミット後のブロックの一覧を返します。
timeout 省略可能。 timeout パラメーターは、秒単位で表されます。 詳細については、「 Blob Service 操作のタイムアウトの設定」を参照してください

要求ヘッダー

必須要求ヘッダーと省略可能な要求ヘッダーを次の表に示します。

要求ヘッダー 説明
Authorization 必須。 承認スキーム、アカウント名、および署名を指定します。 詳細については、「Azure Storage要求を承認する」を参照してください。
Date または x-ms-date 必須。 要求に対して協定世界時 (UTC) を指定します。 詳細については、「Azure Storage要求を承認する」を参照してください。
x-ms-version すべての承認された要求に必要です。匿名要求の場合は省略可能です。 この要求に使用する操作のバージョンを指定します。 詳細については、「Azure Storage サービスのバージョン管理」を参照してください。
x-ms-lease-id:<ID> 省略可能。 このヘッダーを指定すると、次の 2 つの条件を満たした場合にのみ操作が実行されます。

- BLOB のリースは現在アクティブです。
- 要求で指定されたリース ID は、BLOB のリース ID と一致します。

このヘッダーを指定すると、2 つの条件を満たしていない場合は要求が失敗し、操作はステータス コード 412 (Precondition Failed) で失敗します。
x-ms-client-request-id 省略可能。 ストレージ分析ログが有効になっているときに分析ログに記録される 1 KiB 文字制限を持つ、クライアントによって生成された不透明な値を提供します。 クライアント側のアクティビティをサーバーが受信した要求と関連付けるには、このヘッダーを使用することが強く推奨されます。 詳細については、「Storage AnalyticsログAzure ログ: ログを使用したStorage要求の追跡」を参照してください。

この操作では、条件ヘッダーを使用して、指定した条件を満たした場合にのみ操作を実行することもできます。 詳細については、「BLOB サービス操作の条件ヘッダーの指定」を参照してください。

要求本文

[なし] :

要求のサンプル

次の要求 URI の例は、MOV1.avi という名前のコミット後のブロック一覧を返します。

GET http://myaccount.blob.core.windows.net/movies/MOV1.avi?comp=blocklist&blocklisttype=committed HTTP/1.1  

次の要求 URI の例は、コミット後のブロック一覧とコミット前のブロック一覧の両方を返します。

GET http://myaccount.blob.core.windows.net/movies/MOV1.avi?comp=blocklist&blocklisttype=all HTTP/1.1  

次の要求 URI の例は、スナップショットのコミット後のブロック一覧を返します。 スナップショットはコミット後のブロックのみから構成されるため、コミット前のブロックは関連付けられていません。

GET http://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist&snapshot=2009-09-30T20%3a11%3a15.2735974Z  

[応答]

応答には HTTP ステータス コード、一連の応答ヘッダー、およびブロックの一覧を含む応答本文が含まれます。

状態コード

操作に成功すると、状態コード 200 (OK) が返されます。

状態コードの詳細については、「 状態とエラー コード」を参照してください。

レスポンス ヘッダー

この操作の応答には、次のヘッダーが含まれています。 応答に追加の標準 HTTP ヘッダーが含まれる場合もあります。 すべての標準ヘッダーは 、HTTP/1.1 プロトコル仕様に準拠しています。

応答ヘッダー 説明
Last-Modified BLOB が最後に更新された日時。 日付形式は RFC 1123 に従います。 詳細については、「 ヘッダー内のDate-Time値の表現 」を参照してください。 このヘッダーは、BLOB にコミット後のブロックがある場合にのみ返されます。

BLOB を変更する操作 (BLOB のメタデータまたはプロパティの更新など) を行うと、BLOB の最終更新時刻が変更されます。
ETag BLOB の ETag。 このヘッダーは、BLOB にコミット後のブロックがある場合にのみ返されます。
Content-Type BLOB の MIME コンテンツの種類。 既定値は application/xml です。
x-ms-blob-content-length BLOB のサイズ (単位: バイト)。
x-ms-request-id このヘッダーは要求を一意に識別するので、要求のトラブルシューティングに使用できます。 詳細については、「 API 操作のトラブルシューティング」を参照してください
x-ms-version 要求の実行に使用する BLOB サービスのバージョンを示します。 このヘッダーはバージョン 2009-09-19 以降で行った要求に対して返されます。

このヘッダーは、コンテナーが BLOB サービスの 2009-09-19 バージョンを使用するパブリック アクセス用にマークされている場合は、バージョン指定のない匿名要求に対しても返されます。 コミット後のブロック一覧のみ匿名要求を介して返すことができます。
Date サービスによって生成される、応答の開始時刻を示す UTC 日付/時刻値。
x-ms-client-request-id このヘッダーは、要求と対応する応答のトラブルシューティングに使用できます。 このヘッダーの値は、要求に存在し、その値 x-ms-client-request-id が最大 1024 文字の ASCII 文字で表示される場合、ヘッダーの値と同じです。 ヘッダーが x-ms-client-request-id 要求に存在しない場合、このヘッダーは応答に存在しません。

この操作では、条件ヘッダーを使用して、指定した条件を満たした場合にのみブロック一覧を取得することもできます。 詳細については、「BLOB サービス操作の条件ヘッダーの指定」を参照してください。

応答本文

コミット後のブロックのみ返す要求の応答本文の形式は次のとおりです。

<?xml version="1.0" encoding="utf-8"?>  
<BlockList>  
  <CommittedBlocks>  
    <Block>  
      <Name>base64-encoded-block-id</Name>  
      <Size>size-in-bytes</Size>  
    </Block>  
  <CommittedBlocks>  
</BlockList>  

コミット後のブロックとコミット前のブロックの両方を返す要求の応答本文の形式は次のとおりです。

  
<?xml version="1.0" encoding="utf-8"?>  
<BlockList>  
  <CommittedBlocks>  
     <Block>  
        <Name>base64-encoded-block-id</Name>  
        <Size>size-in-bytes</Size>  
     </Block>  
  </CommittedBlocks>  
  <UncommittedBlocks>  
    <Block>  
      <Name>base64-encoded-block-id</Name>  
      <Size>size-in-bytes</Size>  
    </Block>  
  </UncommittedBlocks>  
 </BlockList>  
  

応答のサンプル

次の例では、blocklisttype パラメーターが committed に設定されているため、BLOB のコミット後のブロックのみが応答で返されます。

HTTP/1.1 200 OK  
Transfer-Encoding: chunked  
Content-Type: application/xml  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0  
x-ms-request-id: 42da571d-34f4-4d3e-b53e-59a66cb36f23  
Date: Sun, 25 Sep 2011 00:33:19 GMT  
  
<?xml version="1.0" encoding="utf-8"?>  
<BlockList>  
  <CommittedBlocks>  
    <Block>  
      <Name>BlockId001</Name>  
      <Size>4194304</Size>  
    </Block>  
    <Block>  
      <Name>BlockId002</Name>  
      <Size>4194304</Size>  
    </Block>  
  </CommittedBlocks>  
</BlockList>  

この例では、blocklisttype パラメーターは all に設定され、BLOB のコミット後のブロックとコミット前のブロックの両方が応答で返されます。

HTTP/1.1 200 OK  
Transfer-Encoding: chunked  
Content-Type: application/xml  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0  
x-ms-request-id: 42da571d-34f4-4d3e-b53e-59a66cb36f23  
Date: Sun, 25 Sep 2011 00:35:56 GMT  
  
<?xml version="1.0" encoding="utf-8"?>  
<BlockList>  
  <CommittedBlocks>  
    <Block>  
      <Name>BlockId001</Name>  
      <Size>4194304</Size>  
    </Block>  
    <Block>  
      <Name>BlockId002</Name>  
      <Size>4194304</Size>  
    </Block>  
  </CommittedBlocks>  
  <UncommittedBlocks>  
    <Block>  
      <Name>BlockId003</Name>  
      <Size>4194304</Size>  
    </Block>  
    <Block>  
      <Name>BlockId004</Name>  
      <Size>1024000</Size>  
    </Block>  
  </UncommittedBlocks>  
</BlockList>  

この次の例では、blocklisttype パラメーターが all に設定されていますが、BLOB はまだコミットされていないため、CommittedBlocks 要素は空です。

HTTP/1.1 200 OK  
Transfer-Encoding: chunked  
Content-Type: application/xml  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0  
x-ms-request-id: 42da571d-34f4-4d3e-b53e-59a66cb36f23  
Date: Wed, 14 Sep 2011 00:40:22 GMT  
  
<?xml version="1.0" encoding="utf-8"?>  
<BlockList>  
  <CommittedBlocks />  
  <UncommittedBlocks>  
    <Block>  
      <Name>BlockId001</Name>  
      <Size>1024</Size>  
    </Block>  
    <Block>  
      <Name>BlockId002</Name>  
      <Size>1024</Size>  
    </Block>  
    <Block>  
      <Name>BlockId003</Name>  
      <Size>1024</Size>  
    </Block>  
    <Block>  
      <Name>BlockId004</Name>  
      <Size>1024</Size>  
    </Block>  
  </UncommittedBlocks>  
</BlockList>  

承認

コンテナーの ACL が匿名アクセスを許可するように設定されている場合は、すべてのクライアントが Get Block List を呼び出すことができます。ただし、パブリックにアクセスできるのはコミット後のブロックのみです。 コミットされていないブロックの一覧へのアクセスは、アカウント所有者と、この BLOB またはそのコンテナーを読み取るためのアクセス許可がある共有アクセス署名を使用するユーザーに制限されます。

注釈

Get Block List を呼び出して、ブロック BLOB にコミットされたブロックの一覧、まだコミットされていないブロックの一覧、またはその両方の一覧を取得できます。 blocklisttype パラメーターを使用して、返すブロック一覧を指定します。 コミットされたブロックの一覧は、 Put Block List 操作でコミットされたのと同じ順序で返されます。

コミット前のブロック一覧を使用して、Put Block または Put Block List の呼び出しに失敗した場合にどのブロックが BLOB にないかを判断します。 コミットされていないブロックの一覧がアルファベット順に返されます。 ブロック ID が複数回アップロードされた場合は、最後にアップロードされたブロックのみ一覧に出現します。

BLOB がまだコミットされていない場合は、blocklisttype=all を指定して Get Block List を呼び出すとコミット前のブロックが返され、CommittedBlocks 要素は空になります。

Get Block List は、コミットされていないブロックの一覧を読み取るときにコンカレンシーをサポートしません。 他の Get Block List 読み取り操作と比べて、要求の最大レートが低い場所 blocklisttype=uncommitted への呼び出しまたは blocklisttype=all 最大要求レートの低下。 読み取り操作のターゲット スループットの詳細については、「スケーラビリティとパフォーマンスのターゲットAzure Storage」を参照してください。

バージョン 2019-12-12 以降では、ブロック BLOB には最大 4,000 MiB のサイズのブロックが含まれる場合があります。 符号付き 32 ビット整数を使用してブロック サイズを表すアプリケーションを保護するには、2019-12-12 より前の REST バージョンで 100 MiB を超えるブロックを含むブロック BLOB を呼び出すと Get Block List 、状態コード 409 (競合) になります。

Get Block List はブロック BLOB のみに適用されます。 ページ BLOB に対して Get Block List を呼び出すと、ステータス コード 400 (Bad Request) が返されます。

Get Block List アーカイブされたブロック BLOB では失敗します。

こちらもご覧ください

Azure Storageへの要求を承認する
ステータス コードとエラー コード
BLOB サービスのエラー コード
BLOB サービス操作のタイムアウトの設定