エクスポート (0) 印刷
すべて展開

Put Block List

更新日: 2014年1月

Put Block List 操作は、BLOB を構成するブロック ID の一覧を指定することによって BLOB を書き込みます。ブロックを BLOB の一部として書き込むには、その前の Put Block 操作でブロックがサーバーに正常に書き込まれている必要があります。

Put Block List を呼び出して、変更されたブロックのみをアップロードし、新規と既存のブロックを共にコミットすることによって BLOB を更新できます。この操作を行うには、コミット後のブロック一覧またはコミット前のブロック一覧からブロックをコミットするか、あるいはどちらの一覧に属しているかに関係なく、アップロードされた最新バージョンのブロックをコミットするかを指定します。

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

 

  PUT メソッド要求の URI HTTP バージョン

https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist

HTTP/1.1

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

 

  PUT メソッド要求の URI HTTP バージョン

http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=blocklist

HTTP/1.1

ストレージ エミュレーターでは、最大 2 GB の BLOB サイズのみがサポートされます。

詳細については、「開発とテストのための Azure のストレージ エミュレーター使用」を参照してください。

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

 

Parameter 説明

timeout

省略可能。timeout パラメーターは、秒単位で表されます。詳細については、「BLOB サービス操作のタイムアウトの設定」を参照してください。

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

 

要求ヘッダー 説明

Authorization

必須。認証スキーム、アカウント名、および署名を指定します。詳細については、「Azure ストレージ サービスの認証」を参照してください。

Date またはx-ms-date

必須。要求の世界協定時刻 (UTC) を指定します。詳細については、「Azure ストレージ サービスの認証」を参照してください。

x-ms-version

認証されたすべての要求について必須です。この要求に使用する操作のバージョンを指定します。詳細については、「Azure ストレージ サービスのバージョン設定」を参照してください。

Content-Length

必須。要求のコンテンツのサイズ (バイト単位)。このヘッダーは、BLOB そのものではなく、ブロック一覧のコンテンツのサイズを示します。

Content-MD5

省略可能。要求のコンテンツの MD5 ハッシュ。このハッシュは転送時の要求コンテンツの整合性を確認するために使用します。2 つのハッシュが一致しない場合、操作はステータス コード 400 (Bad Request) で失敗します。

このヘッダーは、BLOB のコンテンツではなく、要求のコンテンツに関連付けられています。

x-ms-blob-cache-control

省略可能。BLOB のキャッシュ制御を設定します。このプロパティを指定した場合は BLOB に保存され、読み取り要求によって返されます。

このプロパティを要求に指定しない場合、要求が成功すると、BLOB ではこのプロパティはクリアされます。

x-ms-blob-content-type

省略可能。BLOB のコンテンツの種類を設定します。このプロパティを指定した場合は BLOB に保存され、読み取り要求によって返されます。

コンテンツの種類を指定しない場合は既定の種類 (application/octet-stream) に設定されます。

x-ms-blob-content-encoding

省略可能。BLOB のコンテンツのエンコードを設定します。このプロパティを指定した場合は BLOB に保存され、読み取り要求によって返されます。

このプロパティを要求に指定しない場合、要求が成功すると、BLOB ではこのプロパティはクリアされます。

x-ms-blob-content-language

省略可能。BLOB のコンテンツの言語を設定します。このプロパティを指定した場合は BLOB に保存され、読み取り要求によって返されます。

このプロパティを要求に指定しない場合、要求が成功すると、BLOB ではこのプロパティはクリアされます。

x-ms-blob-content-md5

省略可能。BLOB のコンテンツの MD5 ハッシュ。個々のブロックのハッシュはアップロード時に検証されているため、このハッシュは検証されません。

Get Blob 操作を実行すると、このヘッダーの値が Content-MD5 応答ヘッダーに返されます。

このプロパティを要求に指定しない場合、要求が成功すると、BLOB ではこのプロパティはクリアされます。

x-ms-meta-name:value

省略可能。BLOB に関連付けられたユーザー定義の名前と値のペア。

バージョン 2009-09-19 以降では、メタデータの名前は C# 識別子の名前付け規則に従う必要があります。

x-ms-lease-id:<ID>

BLOB にアクティブなリースが存在する場合は必須です。アクティブなリースが存在する BLOB に対してこの操作を実行するには、このヘッダーに有効なリース ID を指定します。

x-ms-client-request-id

省略可能。Storage Analytics Logging が有効な場合に解析ログに記録される、クライアントで生成された非透過の値を 1 KB の文字制限付きで提供します。クライアント側のアクティビティとサーバーが受け取る要求を相互に関連付けるには、このヘッダーを使用することを強くお勧めします。詳細については、「Storage Analytics Logging について」および「Windows Azure のログ: ログを使用した、ストレージ要求の追跡」を参照してください。

x-ms-blob-content-disposition

省略可能。BLOB の Content-Disposition ヘッダーを設定します。バージョン 2013-08-15 以降で使用できます。

Content-Disposition ヘッダー フィールドは、応答ペイロードを処理する方法に関する追加情報を伝達し、追加のメタデータをアタッチするために使用することもできます。たとえば、attachment に設定した場合、ユーザー エージェントで応答を表示する代わりに、[名前を付けて保存] ダイアログ ボックスを表示することを示します。

Get Blob 操作と Get Blob Properties 操作からの応答には、content-disposition ヘッダーが含まれます。

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

要求本文で、BLOB サービスが要求されたブロックを確認するブロック一覧を指定できます。この方法を利用すると、BLOB 全体を再度アップロードしなくても、個別のブロックを挿入、置換、または削除することによって既存の BLOB を更新できます。変更された 1 つまたは複数のブロックをアップロードし、保存する新規のブロックと既存のブロックを共にコミットすることによって、BLOB の新しいバージョンをコミットできます。

BLOB を更新する場合、ブロック ID をコミット後のブロック一覧から検索するか、コミット前のブロック一覧から検索するか、またはコミット前のブロック一覧を検索した後でコミット後のブロック一覧から検索するかを指定できます。使用する方法を指定するには、要求本文の適切な XML 要素に次のようにブロック ID を指定します。

  • BLOB サービスが、指定したブロックをコミット後のブロック一覧のみから検索するようにするには、Committed 要素にブロック ID を指定します。対象ブロックがコミット後のブロック一覧に見つからなかった場合は BLOB の一部として書き込まれず、BLOB サービスはステータス コード 400 (Bad Request) を返します。

  • BLOB サービスが、指定したブロックをコミット前のブロック一覧のみから検索するようにするには、Uncommitted 要素にブロック ID を指定します。対象ブロックがコミット前のブロック一覧に見つからなかった場合は BLOB の一部として書き込まれず、BLOB サービスはステータス コード 400 (Bad Request) を返します。

  • BLOB サービスが、コミット前のブロック一覧を先に検索するようにするには、Latest 要素にブロック ID を指定します。対象ブロックがコミット前のブロック一覧に見つかった場合、そのブロックのバージョンが最新であり、BLOB に書き込まれます。対象ブロックがコミット前のブロック一覧に見つからなかった場合はコミット後のブロック一覧を検索し、見つかった場合は BLOB に書き込まれます。

このバージョンの Put Block List の要求本文では次の XML 形式を使用します。

<?xml version="1.0" encoding="utf-8"?>
<BlockList>
  <Committed>first-base64-encoded-block-id</Committed>
  <Uncommitted>second-base64-encoded-block-id</Uncommitted>
  <Latest>third-base64-encoded-block-id</Latest>
  ...
</BlockList>

Put Block List の例として、アップロードした 3 つのブロックをコミットする場合を示します。次の例では、一覧の各ブロックの最新バージョンを使用するように指定して、新規 BLOB をコミットします。各ブロックがコミット済みであるかどうかを意識する必要はありません。


Request Syntax:
PUT https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist HTTP/1.1

Request Headers:
x-ms-date: Wed, 31 Aug 2011 00:17:43 GMT
x-ms-version: 2011-08-18
Content-Type: text/plain; charset=UTF-8
Authorization: SharedKey myaccount:DJ5QZSVONZ64vAhnN/wxcU+Pt5HQSLAiLITlAU76Lx8=
Content-Length: 133

Request Body:
<?xml version="1.0" encoding="utf-8"?>
<BlockList>
  <Latest>AAAAAA==</Latest>
  <Latest>AQAAAA==</Latest>
  <Latest>AZAAAA==</Latest>
</BlockList>

次に、BLOB を更新する場合を示します。新規 BLOB を次のように変更します。

  • ID ANAAAA== の新規ブロック。まず、Put Block を呼び出してこのブロックをアップロードする必要があります。これにより、このブロックは Put Block List が呼び出されるまでコミット前のブロック一覧に表示されます。

  • ID AZAAAA== のブロックの更新。まず、Put Block を呼び出してこのブロックをアップロードする必要があります。これにより、このブロックは Put Block List が呼び出されるまでコミット前のブロック一覧に表示されます。

  • ID AAAAAA== のブロックの削除。このブロックが Put Block List の次の呼び出しに含まれないことを前提にすると、このブロックは実質的に BLOB から削除されます。

次の例は、Put Block List を呼び出して BLOB を更新する場合を示しています。


Request Syntax:
PUT https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist HTTP/1.1

Request Headers:
x-ms-date: Wed, 31 Aug 2009 00:17:43 GMT
x-ms-version: 2011-08-18
Content-Type: text/plain; charset=UTF-8
Authorization: SharedKey myaccount:DJ5QZSVONZ64vAhnN/wxcU+Pt5HQSLAiLITlAU76Lx8=
Content-Length: 133

Request Body:
<?xml version="1.0" encoding="utf-8"?>
<BlockList>
  <Uncommitted>ANAAAA==</Uncommitted>
  <Committed>AQAAAA==</Committed>
  <Uncommitted>AZAAAA==</Uncommitted>
</BlockList>

応答には、HTTP 状態コードおよび一連の応答ヘッダーが含まれています。

操作が正常に終了すると、ステータス コード 201 (Created) が返されます。

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

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

 

応答 説明

ETag

エンティティ タグに含まれる値は、クライアントが If-Match 要求ヘッダーを使用して条件付き GET/PUT 操作を実行するときに使用できます。要求バージョンが 2011-08-18 またはそれ以降である場合、ETag 値は引用符で囲まれます。

Last-Modified

BLOB が最後に更新された日時。日付形式は RFC 1123 に従います。詳細については、「ヘッダーにおける日付/時刻値の表現」を参照してください。

BLOB を変更する操作 (BLOB のメタデータまたはプロパティの更新など) を行うと、BLOB の最終更新時刻が変更されます。

Content-MD5

このヘッダーは、クライアントがメッセージ内容の整合性を確認する目的で返されます。このヘッダーは、BLOB のコンテンツではなく、要求 (この場合はブロック一覧) のコンテンツを示します。

x-ms-request-id

このヘッダーは要求を一意に識別するので、要求のトラブルシューティングに使用できます。詳細については、「API 操作のトラブルシューティング」を参照してください。

x-ms-version

要求の実行に使用する BLOB サービスのバージョンを示します。このヘッダーはバージョン 2009-09-19 以降で行った要求に対して返されます。

Date

サービスによって生成される、応答の開始時刻を示す UTC 日付/時刻値。

Response Status:
HTTP/1.1 201 Created

Response Headers:
Transfer-Encoding: chunked
Content-MD5: oafL1+HS78x65+e39PGIIg==
Date: Sun, 25 Sep 2011 00:17:44 GMT
ETag: “0x8CB172A360EC34B”
Last-Modified: Sun, 25 Sep 2011 00:17:43 GMT
x-ms-version: 2011-08-18
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0

この操作は、アカウント所有者と、この BLOB またはそのコンテナーに対する書き込みアクセス許可がある共有アクセス署名を持つ任意のユーザーが呼び出すことができます。

Put Block List 操作によって、BLOB を作成するためにブロックが結合される順序が決まります。

ブロック一覧内に同じブロック ID を複数回指定できます。ブロック ID を複数回指定した場合、最後にコミットされた BLOB のブロック一覧内の各位置のバイト範囲を表します。同じブロック ID が一覧に複数出現した場合は、そのブロック ID のすべてのインスタンスを同じブロック一覧に指定する必要があります。つまり、すべてのインスタンスを Committed 要素、Uncommitted 要素、Latest 要素のいずれかに指定する必要があります。

Put Block List を使用すると、BLOB 全体を再度アップロードしなくても、個別のブロックを挿入、置換、または削除することによって既存の BLOB を変更できます。新規 BLOB を作成する場合、または既存 BLOB のコンテンツを更新する場合、ブロック ID を現在のコミット後のブロック一覧とコミット前のブロック一覧の両方から指定できます。この方法を利用して、BLOB を更新する際に新規ブロックの一部をコミット前のブロック一覧から指定し、残りのブロックを既存の BLOB に属するコミット後のブロック一覧から指定することができます。

Latest 要素に指定したブロック ID がコミット後のブロック一覧とコミット前のブロック一覧の両方に存在する場合、Put Block List はコミット前のブロック一覧からブロックをコミットします。ブロック ID がコミット後のブロック一覧に存在し、コミット前のブロック一覧に存在しない場合、Put Block List はコミット後のブロック一覧からブロックをコミットします。

コミット可能な最大ブロック数は 50,000、Put Block List 操作でコミットできる BLOB の最大サイズは 200 GB です。50,000 を超えるブロックをコミットしようとすると、サービスはステータス コード 413 (Request Entity Too Large) を返します。許容される最大ブロック数など、エラーに関する追加情報も応答で返されます。

BLOB に関連付けることができるコミット前のブロックの最大数は 100,000、コミット前のブロック一覧の最大サイズは 400 GB です。

Put Block List を呼び出して既存の BLOB を更新すると、BLOB の既存のプロパティおよびメタデータは上書きされますが、既存のスナップショットは BLOB 内で維持されます。条件要求ヘッダーを使用して、指定した条件を満たした場合にのみ操作を実行することもできます。

Put Block List 操作がブロックの欠落によって失敗した場合、欠落したブロックをアップロードする必要があります。

前回 Put Block 操作が成功してから 1 週間以内に BLOB に対する Put Block List または Put Block の成功した呼び出しが存在しない場合、コミット前のブロックはガベージ コレクションされます。BLOB に対して Put Blob を呼び出すと、コミット前のすべてのブロックはガベージ コレクションされます。

BLOB にアクティブなリースが存在する場合、クライアントが BLOB 一覧をコミットするには、要求に有効なリース ID を指定する必要があります。クライアントがリース ID を指定しなかった場合、または無効なリース ID を指定した場合、BLOB サービスはステータス コード 412 (Precondition Failed) を返します。クライアントがリース ID を指定し、BLOB にアクティブなリースが存在しない場合にも、BLOB サービスはステータス コード 412 (Precondition Failed) を返します。まだ存在していない BLOB に対してクライアントがリース ID を指定した場合、BLOB サービスはバージョン 2013-08-15 以降に対する要求に対してはステータス コード 412 (Precondition Failed) を返します。それよりも前のバージョンでは、ステータス コード 201 (Created) を返します。

BLOB にアクティブなリースが存在する場合、Put Block List を呼び出して BLOB を更新すると、更新された BLOB でもリースは維持されます。

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

表示:
© 2014 Microsoft