Append BlockAppend Block

操作は、 Append Block 既存の追加 blob の末尾に新しいデータブロックをコミットします。The Append Block operation commits a new block of data to the end of an existing append blob.

この Append Block 操作は、blob がに設定されたを使用して作成された場合にのみ許可され x-ms-blob-type AppendBlob ます。The Append Block operation is permitted only if the blob was created with x-ms-blob-type set to AppendBlob. Append Blockは、バージョン2015-02-21 以降のバージョンでのみサポートされます。Append Block is supported only on version 2015-02-21 version or later.

RequestRequest

Append Block 要求の構成は次のとおりです。The Append Block request may be constructed as follows. HTTPS が推奨されます。HTTPS is recommended. myaccount はストレージ アカウントの名前に置き換えます。Replace myaccount with the name of your storage account:

PUT メソッド要求の URIPUT Method Request URI HTTP バージョンHTTP Version
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=appendblock HTTP/1.1HTTP/1.1

エミューレートされたストレージ サービスに対する要求では、エミュレーターのホスト名と BLOB Service ポートを 127.0.0.1:10000 と指定し、その後にエミューレートされたストレージ アカウント名を指定します。When making a request against the emulated storage service, specify the emulator hostname and Blob service port as 127.0.0.1:10000, followed by the emulated storage account name:

PUT メソッド要求の URIPUT Method Request URI HTTP バージョンHTTP Version
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=appendblock HTTP/1.1HTTP/1.1

詳細については、「開発とテストのための Azure Storage Emulator の使用」を参照してください。For more information, see Using the Azure Storage Emulator for Development and Testing.

URI パラメーターURI parameters

パラメーターParameter DescriptionDescription
timeouttimeout 省略可能。Optional. timeout パラメーターは、秒単位で表されます。The timeout parameter is expressed in seconds. 詳細については、「 Blob サービス操作のタイムアウトの設定」を参照してください。For more information, see Setting Timeouts for Blob Service Operations.

要求ヘッダーRequest Headers

必須要求ヘッダーと省略可能な要求ヘッダーを次の表に示します。The following table describes required and optional request headers.

要求ヘッダーRequest Header 説明Description
Authorization 必須です。Required. 認証スキーム、アカウント名、および署名を指定します。Specifies the authorization scheme, account name, and signature. 詳細については、「Azure Storage への要求の承認」を参照してください。See Authorize requests to Azure Storage for more information.
Date または x-ms-dateDate or x-ms-date 必須です。Required. 要求に対して協定世界時 (UTC) を指定します。Specifies the Coordinated Universal Time (UTC) for the request. 詳細については、「 Azure Storage 要求を承認する」を参照してください。For more information, see Authorize requests to Azure Storage.
x-ms-version すべての承認された要求に必須です。Required for all authorized requests. この要求に使用する操作のバージョンを指定します。Specifies the version of the operation to use for this request. 詳細については、「 Azure Storage サービスのバージョン管理」を参照してください。For more information, see Versioning for the Azure Storage Services.
Content-Length 必須です。Required. ブロックのコンテンツのサイズ (バイト単位)。The length of the block content in bytes. ブロックは、サイズが 4 MiB 以下でなければなりません。The block must be less than or equal to 4 MiB in size.

サイズが指定されない場合、操作はステータス コード 411 (Length Required) で失敗します。When the length is not provided, the operation will fail with the status code 411 (Length Required).
Content-MD5 省略可能。Optional. ブロックのコンテンツの MD5 ハッシュ。An MD5 hash of the block content. このハッシュは、転送時のブロックの整合性を確認するために使用します。This hash is used to verify the integrity of the block during transport. このヘッダーを指定すると、ストレージ サービスによって、到達したコンテンツのハッシュと、このヘッダー値が比較されます。When this header is specified, the storage service compares the hash of the content that has arrived with this header value.

この MD5 ハッシュは BLOB と共に保存されません。Note that this MD5 hash is not stored with the blob.

2 つのハッシュが一致しない場合、操作はステータス コード 400 (Bad Request) で失敗します。If the two hashes do not match, the operation will fail with error code 400 (Bad Request).
x-ms-content-crc64 省略可能。Optional. 追加ブロックのコンテンツの CRC64 ハッシュ。A CRC64 hash of the append block content. このハッシュは、転送中に追加ブロックの整合性を確認するために使用されます。This hash is used to verify the integrity of the append block during transport. このヘッダーを指定すると、ストレージ サービスによって、到達したコンテンツのハッシュと、このヘッダー値が比較されます。When this header is specified, the storage service compares the hash of the content that has arrived with this header value.

この CRC64 ハッシュは blob と共に格納されないことに注意してください。Note that this CRC64 hash is not stored with the blob.

2 つのハッシュが一致しない場合、操作はステータス コード 400 (Bad Request) で失敗します。If the two hashes do not match, the operation will fail with error code 400 (Bad Request).

との両方の Content-MD5 x-ms-content-crc64 ヘッダーが存在する場合、要求は 400 (Bad request) で失敗します。If both Content-MD5 and x-ms-content-crc64 headers are present, the request will fail with a 400 (Bad Request).

このヘッダーは、バージョン2019-02-02 以降でサポートされています。This header is supported in versions 2019-02-02 or later.
x-ms-encryption-scope 省略可能。Optional. 要求コンテンツの暗号化に使用する暗号化スコープを指定します。Indicates the encryption scope to use to encrypt the request contents. このヘッダーは、バージョン2019-02-02 以降でサポートされています。This header is supported in versions 2019-02-02 or later.
x-ms-lease-id:<ID> BLOB にアクティブなリースが存在する場合は必須です。Required if the blob has an active lease. アクティブなリースが存在する BLOB に対してこの操作を実行するには、このヘッダーに有効なリース ID を指定します。To perform this operation on a blob with an active lease, specify the valid lease ID for this header.
x-ms-client-request-id 省略可能。Optional. ストレージ分析ログが有効になっている場合に analytics ログに記録される、クライアントによって生成される非透過の値を 1 KiB 文字の制限付きで提供します。Provides a client-generated, opaque value with a 1 KiB character limit that is recorded in the analytics logs when storage analytics logging is enabled. クライアント側のアクティビティをサーバーが受信した要求と関連付けるには、このヘッダーを使用することが強く推奨されます。Using this header is highly recommended for correlating client-side activities with requests received by the server. 詳細については、「 Storage Analytics のログ記録Azure のログ記録: ログを使用したストレージ要求の追跡」を参照してください。For more information, see About Storage Analytics Logging and Azure Logging: Using Logs to Track Storage Requests.
x-ms-blob-condition-maxsize 省略可能な条件ヘッダー。Optional conditional header. 追加 blob に許可される最大長 (バイト単位)。The max length in bytes permitted for the append blob. 操作によって Append Block blob がその制限を超える場合、または blob サイズが既にこのヘッダーで指定されている値よりも大きい場合、要求は MaxBlobSizeConditionNotMet エラー (HTTP 状態コード412–前提条件失敗) で失敗します。If the Append Block operation would cause the blob to exceed that limit or if the blob size is already greater than the value specified in this header, the request will fail with MaxBlobSizeConditionNotMet error (HTTP status code 412 – Precondition Failed).
x-ms-blob-condition-appendpos 省略可能な条件ヘッダー。操作にのみ使用され Append Block ます。Optional conditional header, used only for the Append Block operation. 比較するバイトオフセットを示す数値。A number indicating the byte offset to compare. Append Blockは、追加位置がこの数値と等しい場合にのみ成功します。Append Block will succeed only if the append position is equal to this number. そうでない場合、要求は AppendPositionConditionNotMet れたエラーで失敗します (HTTP 状態コード412–前提条件に失敗しました)。If it is not, the request will fail with the AppendPositionConditionNotMet error (HTTP status code 412 – Precondition Failed).

この操作では、追加の条件ヘッダーを使用して、指定した条件が満たされた場合にのみ API が成功するようにします。This operation supports the use of additional conditional headers to ensure that the API succeeds only if a specified condition is met. 詳細については、「BLOB サービス操作の条件ヘッダーの指定」を参照してください。For more information, see Specifying Conditional Headers for Blob Service Operations.

要求ヘッダー (顧客が指定した暗号化キー)Request Headers (Customer-provided encryption keys)

バージョン2019-02-02 以降では、顧客が指定したキーを使用して blob を暗号化する要求で、次のヘッダーを指定することができます。Beginning with version 2019-02-02, the following headers may be specified on the request to encrypt a blob with a customer-provided key. 顧客が指定したキーを使用した暗号化 (および対応するヘッダーのセット) は省略可能です。Encryption with a customer-provided key (and the corresponding set of headers) is optional.

要求ヘッダーRequest header 説明Description
x-ms-encryption-key 必須です。Required. Base64 でエンコードされた AES-256 暗号化キー。The Base64-encoded AES-256 encryption key.
x-ms-encryption-key-sha256 必須です。Required. 暗号化キーの Base64 でエンコードされた SHA256 ハッシュ。The Base64-encoded SHA256 hash of the encryption key.
x-ms-encryption-algorithm: AES256 必須です。Required. 暗号化に使用するアルゴリズムを指定します。Specifies the algorithm to use for encryption. このヘッダーの値はである必要があり AES256 ます。The value of this header must be AES256.

要求本文Request Body

要求本文にはブロックのコンテンツが含まれます。The request body contains the content of the block.

要求のサンプルSample Request

Request Syntax:  
PUT https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=appendblock  HTTP/1.1  
  
Request Headers:  
x-ms-version: 2015-02-21  
x-ms-date: <date>  
x-ms-blob-condition-appendpos: 2097152  
x-ms-blob-condition-maxsize: 4194304  
Authorization: SharedKey myaccount:J4ma1VuFnlJ7yfk/Gu1GxzbfdJloYmBPWlfhZ/xn7GI=  
Content-Length: 1048  
If-Match: "0x8CB172A360EC34B"  
  

応答Response

応答には、HTTP 状態コードおよび一連の応答ヘッダーが含まれています。The response includes an HTTP status code and a set of response headers.

状態コードStatus Code

操作が正常に終了すると、状態コード 201 (Created) が返されます。A successful operation returns status code 201 (Created).

ステータスコードの詳細については、「ステータスコードとエラーコード」を参照してください。For information about status codes, see Status and Error Codes.

レスポンス ヘッダーResponse Headers

この操作の応答には、次のヘッダーが含まれています。The response for this operation includes the following headers. 応答に追加の標準 HTTP ヘッダーが含まれる場合もあります。The response may also include additional standard HTTP headers. すべての標準ヘッダーは、 HTTP/1.1 プロトコル仕様に準拠しています。All standard headers conform to the HTTP/1.1 protocol specification.

応答ヘッダーResponse header 説明Description
ETag ETag には、クライアントが If-match 要求ヘッダーを使用して条件付き PUT 操作を実行するために使用できる、引用符で囲まれた値が含まれています。The ETag contains a value in quotes that the client can use to perform conditional PUT operations by using the If-Match request header.
Last-Modified BLOB が最後に更新された日時。The date/time that the blob was last modified. 日付形式は RFC 1123 に従います。The date format follows RFC 1123. 詳細については、「ヘッダーの日付/時刻値の表現」を参照してください。For more information, see Representation of Date-Time Values in Headers.

Blob に対するすべての書き込み操作 (blob のメタデータまたはプロパティの更新を含む) は、blob の最終更新時刻を変更します。Any write operation on the blob (including updates on the blob's metadata or properties) changes the last-modified time of the blob.
Content-MD5 このヘッダーは、クライアントがメッセージ内容の整合性を確認する目的で返されます。This header is returned so that the client can check for message content integrity. このヘッダーの値は BLOB サービスによって計算されるので、要求ヘッダーで指定された値と必ずしも同じ値であるとは限りません。The value of this header is computed by the Blob service; it is not necessarily the same value specified in the request headers. バージョン2019-02-02 以降では、要求にこのヘッダーが含まれている場合にのみ、このヘッダーが返されます。For versions 2019-02-02 or later, This header is only returned when the request has this header.
x-ms-content-crc64 バージョン2019-02-02 以降では、クライアントがメッセージの内容の整合性をチェックできるように、このヘッダーが返されます。For versions 2019-02-02 or later, This header is returned so that the client can check for message content integrity. このヘッダーの値は BLOB サービスによって計算されるので、要求ヘッダーで指定された値と必ずしも同じ値であるとは限りません。The value of this header is computed by the Blob service; it is not necessarily the same value specified in the request headers.

このヘッダーは Content-md5 、ヘッダーが要求内に存在しない場合に返されます。This header is returned when Content-md5 header is not present in the request.
x-ms-request-id このヘッダーは要求を一意に識別するので、要求のトラブルシューティングに使用できます。This header uniquely identifies the request that was made and can be used for troubleshooting the request. 詳細については、「API 操作のトラブルシューティング」を参照してください。For more information, see Troubleshooting API Operations.
x-ms-version 要求の実行に使用する BLOB サービスのバージョンを示します。Indicates the version of the Blob service used to execute the request. このヘッダーはバージョン 2009-09-19 以降で行った要求に対して返されます。This header is returned for requests made against version 2009-09-19 and later.
Date サービスによって生成される、応答の開始時刻を示す UTC 日付/時刻値。A UTC date/time value generated by the service that indicates the time at which the response was initiated.
x-ms-blob-append-offset この応答ヘッダーは、追加操作の場合にのみ返されます。This response header is returned only for append operations. このメソッドは、ブロックがコミットされたオフセットをバイト単位で返します。It returns the offset at which the block was committed, in bytes.
x-ms-blob-committed-block-count Blob に存在するコミット済みブロックの数。The number of committed blocks present in the blob. これを使用すると、追加できる追加の数を制御できます。This can be used to control how many more appends can be done.
x-ms-request-server-encrypted: true/false バージョン2015-12-11 以降。Version 2015-12-11 or newer. true要求の内容が指定されたアルゴリズムを使用して正常に暗号化されている場合、このヘッダーの値はに設定されます。それ以外の場合はに設定され false ます。The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise.
x-ms-encryption-key-sha256 バージョン2019-02-02 以降。Version 2019-02-02 or newer. このヘッダーは、要求で暗号化のために顧客が指定したキーを使用した場合に返されます。そのため、クライアントは、指定されたキーを使用して要求の内容が正常に暗号化されていることを確認できます。This header is returned if the request used a customer-provided key for encryption, so the client can ensure the contents of the request are successfully encrypted using the provided key.
x-ms-encryption-scope バージョン2019-02-02 以降。Version 2019-02-02 or newer. 要求で暗号化スコープが使用されている場合は、このヘッダーが返されます。これにより、クライアントは、要求の内容が暗号化スコープを使用して正常に暗号化されていることを確認できます。This header is returned if the request used an encryption scope, so the client can ensure the contents of the request are successfully encrypted using the encryption scope.
x-ms-client-request-id このヘッダーを使用して、要求および対応する応答のトラブルシューティングを行うことができます。This header can be used to troubleshoot requests and corresponding responses. このヘッダーの値は、要求内に存在する場合はヘッダーの値と同じで、 x-ms-client-request-id 値は最大で1024の表示可能な ASCII 文字になります。The value of this header is equal to the value of the x-ms-client-request-id header if it is present in the request and the value is at most 1024 visible ASCII characters. x-ms-client-request-idヘッダーが要求内に存在しない場合、このヘッダーは応答に存在しません。If the x-ms-client-request-id header is not present in the request, this header will not be present in the response.

応答のサンプルSample Response

Response Status:  
HTTP/1.1 201 Created  
  
Response Headers:  
Transfer-Encoding: chunked  
x-ms-content-crc64: 77uWZTolTHU  
Date: <date>  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0  
x-ms-blob-append-offset: 2097152  
x-ms-blob-committed–block-count: 1000  
  

承認Authorization

この操作は、アカウント所有者と、この BLOB またはそのコンテナーに対する書き込みアクセス許可がある共有アクセス署名を持つ任意のユーザーが呼び出すことができます。This operation can be called by the account owner and by anyone with a Shared Access Signature that has permission to write to this blob or its container.

注釈Remarks

追加ブロックは、既存の追加 blob の末尾にブロックをアップロードします。Append Block uploads a block to the end of an existing append blob. サーバーで呼び出しが成功すると、データのブロックが直ちに使用できるようになります。The block of data is immediately available once the call succeeds on the server. ブロックの最大サイズは 4 MiB です。A block may be up to 4 MiB in size.

Append Blockblob が既に存在する場合にのみ成功します。Append Block succeeds only if the blob already exists.

を使用してアップロード Append Block された blob は、ブロック id を公開しないため、追加 blob に対してGet block Listを呼び出すことはできません。Blobs uploaded using Append Block do not expose block IDs, so you cannot call Get Block List against an append blob. これにより、409エラーが発生します。Doing so results in a 409 error.

次の省略可能な条件ヘッダーを要求で指定できます。The following optional conditional headers can be specified on the request:

  1. x-ms-blob-condition-appendpos: このヘッダーには、クライアントがブロックを追加することを要求するバイトオフセットを設定できます。x-ms-blob-condition-appendpos: You can set this header to a byte offset at which the client expects to append the block. 要求は、現在のオフセットがクライアントによって指定されたものと一致する場合にのみ成功します。The request succeeds only if the current offset matches that specified by the client. それ以外の場合、要求は AppendPositionConditionNotMet れたエラーで失敗します (HTTP 状態コード412–前提条件に失敗しました)。Otherwise, the request fails with the AppendPositionConditionNotMet error (HTTP status code 412 – Precondition Failed).

    1つのライターを使用しているクライアントは、このヘッダーを使用して、ネットワーク障害が発生してもブロックの追加操作が成功したかどうかを判断できます。Clients using a single writer may use this header to determine whether when an Append Block operation succeeded despite network failure.

  2. x-ms-blob-condition-maxsize: クライアントはこのヘッダーを使用して、追加操作によって blob のサイズが予想される最大サイズ (バイト単位) を超えないようにすることができます。x-ms-blob-condition-maxsize: Clients can use this header to ensure that append operations do not increase the blob size beyond an expected maximum size in bytes. 条件が失敗した場合、要求は MaxBlobSizeConditionNotMet エラー (HTTP 状態コード412–前提条件失敗) で失敗します。If the condition fails, the request will fail with MaxBlobSizeConditionNotMet error (HTTP status code 412 – Precondition Failed).

各ブロックは、最大 4 MiB までの異なるサイズにすることができます。Each block can be a different size, up to a maximum of 4 MiB. 追加 blob ごとに最大5万の追加が許可されています。A maximum of 50,000 appends are permitted for each append blob. したがって、追加 blob の最大サイズは、195 GiB (4 MiB X 5万ブロック) よりも少し大きくなります。The maximum size of an append blob is therefore slightly more than 195 GiB (4 MiB X 50,000 blocks). 4 MiB を超えるブロックをアップロードしようとすると、サービスは HTTP 状態コード 413 (要求エンティティが大きすぎます) を返します。If you attempt to upload a block that is larger than 4 MiB, the service returns HTTP status code 413 (Request Entity Too Large). 許容される最大ブロック サイズ (バイト単位) など、エラーに関する追加情報も応答で返されます。The service also returns additional information about the error in the response, including the maximum block size permitted in bytes. 5万を超えるブロックをアップロードしようとすると、サービスは BlockCountExceedsLimit エラー (HTTP 状態コード409– Conflict) を返します。If you attempt to upload more than 50,000 blocks, the service returns the BlockCountExceedsLimit error (HTTP status code 409 – Conflict).

BLOB にアクティブなリースが存在する場合、クライアントが BLOB にブロックを書き込むには、要求に有効なリース ID を指定する必要があります。If the blob has an active lease, the client must specify a valid lease ID on the request in order to write a block to the blob. クライアントがリース ID を指定しなかった場合、または無効なリース ID を指定した場合、BLOB Service はステータス コード 412 (Precondition Failed) を返します。If the client does not specify a lease ID, or specifies an invalid lease ID, the Blob service returns status code 412 (Precondition Failed). クライアントがリース ID を指定し、BLOB にアクティブなリースが存在しない場合にも、BLOB Service はステータス コード 412 (Precondition Failed) を返します。If the client specifies a lease ID but the blob does not have an active lease, the Blob service also returns status code 412 (Precondition Failed).

既存のブロック blob またはページ blob に対して追加ブロックを呼び出すと、InvalidBlobType エラー (HTTP 状態コード 409-Conflict) が返されます。Calling Append Block on an existing block blob or page blob will return an InvalidBlobType error (HTTP status code 409 - Conflict). 存在しない blob に対して追加ブロックを呼び出すと、BlobNotFound エラー (HTTP 状態コード404–見つかりません) が返されます。Calling Append Block on a non-existent blob will return a BlobNotFound error (HTTP status code 404 – Not Found).

重複または遅延の追加を回避するAvoiding duplicate or delayed appends

1つのライターのシナリオでは、クライアントは、- ms-chap-条件-appendpos条件ヘッダーを使用して現在のオフセットを確認するか、を使用して条件付きで ETag をチェックすることにより、重複する追加または遅延書き込みを回避でき If-Match ます。In a single writer scenario, the client can avoid duplicate appends or delayed writes either by using the x-ms-blob-condition-appendpos conditional header to check the current offset, or by checking the ETag conditionally using If-Match.

複数のライターのシナリオでは、各クライアントが条件ヘッダーを使用できますが、これはパフォーマンスに関して最適な方法ではない可能性があります。In a multiple writer scenario, each client can use conditional headers, but this may not be an optimal approach in terms of performance. 同時追加スループットを最大にするために、アプリケーションでは、アプリケーションレイヤー内の余分な追加と遅延の追加を処理する必要があります (たとえば、追加するデータにエポックまたはシーケンス番号を追加します)。For the highest concurrent append throughput, applications should handle redundant appends and delayed appends in their application layer (e.g., add epochs or sequence numbers in the data being appended).