Put Blob

この操作により Put Blob 、新しいブロック、ページ、または追加 BLOB が作成されるか、既存のブロック BLOB の内容が更新されます。

既存のブロック BLOB を更新すると、BLOB 上の既存のメタデータが上書きされます。 部分更新は では Put Blobサポートされていません。 既存の BLOB の内容は、新しい BLOB の内容で上書きされます。 ブロック BLOB のコンテンツの部分的な更新を実行するには、 Put Block List 操作を使用します。

バージョン 2015-02-21 以降でのみ追加 BLOB を作成できます。

ページ BLOB または追加 BLOB を作成するための への呼び出し Put Blob では、BLOB のみが初期化されます。 ページ BLOB にコンテンツを追加するには、ページの 配置 操作を呼び出します。 追加 BLOB にコンテンツを追加するには、 追加ブロック 操作を呼び出します。

Request

要求は Put Blob 次のように構築できます。 HTTPS を使用することをお勧めします。 myaccount をストレージ アカウントの名前に置き換えます。

PUT メソッド要求 URI HTTP バージョン
https://myaccount.blob.core.windows.net/mycontainer/myblob HTTP/1.1

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

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

PUT メソッド要求 URI HTTP バージョン
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob HTTP/1.1

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

詳細については、ローカルでの Azure Storage の開発に Azurite エミュレーターを使用する方法に関するページを参照してください。

URI パラメーター

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

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

要求ヘッダー (すべての BLOB の種類)

次の表では、すべての BLOB の種類に必要な要求ヘッダーと省略可能な要求ヘッダーについて説明します。

要求ヘッダー 説明
Authorization 必須。 承認スキーム、アカウント名、署名を指定します。 詳細については、「Azure Storage への要求を承認する」をご覧ください。
Date または x-ms-date 必須。 要求に対して協定世界時 (UTC) を指定します。 詳細については、「Azure Storage への要求を承認する」をご覧ください。
x-ms-version すべての承認された要求に必要です。 この要求に使用する操作のバージョンを指定します。 詳細については、「Azure Storage サービスのバージョン管理」を参照してください。
Content-Length 必須。 要求のサイズ。

ページ BLOB または追加 BLOB の場合、 Put BLOB は BLOB の初期化にのみ使用されるため、このヘッダーの値を 0 に設定する必要があります。 既存のページ BLOB にコンテンツを書き込むには、 Put Page を呼び出します。 追加 BLOB にコンテンツを書き込むには、 Append Block を呼び出します。
Content-Type 省略可能。 BLOB の MIME コンテンツの種類。 既定の型は application/octet-stream です。
Content-Encoding 省略可能。 BLOB に適用されたコンテンツのエンコード方式を指定します。 この値は、BLOB リソースに対して GET BLOB 操作が実行されたときにクライアントに返されます。 この値が返されると、クライアントはそれを使用して BLOB コンテンツをデコードできます。
Content-Language 省略可能。 このリソースで使用される自然言語を指定します。
Content-MD5 省略可能。 BLOB のコンテンツの MD5 ハッシュ。 このハッシュは転送時の BLOB の整合性を確認するために使用します。 このヘッダーを指定すると、ストレージ サービスは、送信されたハッシュに対して到着したハッシュをチェックします。 2 つのハッシュが一致しない場合、エラー コード 400 (無効な要求) で操作が失敗します。

バージョン 2012-02-12 以降でヘッダーを省略すると、Blob Storage によって MD5 ハッシュが生成されます。

BLOB の取得BLOB のプロパティの取得、および BLOB の一覧表示の結果には、MD5 ハッシュが含まれます。
x-ms-content-crc64 省略可能。 BLOB コンテンツの CRC64 ハッシュ。 このハッシュは転送時の BLOB の整合性を確認するために使用します。 このヘッダーを指定すると、ストレージ サービスは、送信されたハッシュに対して到着したハッシュをチェックします。 2 つのハッシュが一致しない場合、エラー コード 400 (無効な要求) で操作が失敗します。 このヘッダーは、バージョン 02-02-2019 以降でサポートされています。

Content-MD5 ヘッダーと x-ms-content-crc64 ヘッダーの両方が存在する場合、要求は 400 (無効な要求) で失敗します。
Cache-Control 省略可能。 Blob Storage はこの値を格納しますが、使用したり変更したりすることはありません。
x-ms-blob-content-type 省略可能。 BLOB のコンテンツの種類を設定します。
x-ms-blob-content-encoding 省略可能。 BLOB のコンテンツのエンコードを設定します。
x-ms-blob-content-language 省略可能。 BLOB のコンテンツの言語を設定します。
x-ms-blob-content-md5 省略可能。 BLOB の MD5 ハッシュを設定します。
x-ms-blob-cache-control 省略可能。 BLOB のキャッシュ制御を設定します。
x-ms-blob-type: <BlockBlob ¦ PageBlob ¦ AppendBlob> 必須。 作成する BLOB の種類 (ブロック BLOB、ページ BLOB、または追加 BLOB) を指定します。 追加 BLOB の作成のサポートは、バージョン 2015-02-21 以降でのみ使用できます。
x-ms-meta-name:value 省略可能。 BLOB にメタデータとして関連付ける名前と値のペア。

: バージョン 2009-09-19 の時点で、メタデータ名は C# 識別子の名前付け規則に従う必要があります。
x-ms-encryption-scope 省略可能。 要求の内容の暗号化に使用する暗号化スコープを示します。 このヘッダーは、バージョン 2019-02-02 以降でサポートされています。
x-ms-tags 省略可能。 BLOB に指定されたクエリ文字列でエンコードされたタグを設定します。 詳細については、「解説」を参照してください。 バージョン 2019-12-12 以降でサポートされています。
x-ms-lease-id:<ID> BLOB にアクティブなリースが存在する場合は必須です。 アクティブなリースが存在する BLOB に対してこの操作を実行するには、このヘッダーに有効なリース ID を指定します。
x-ms-blob-content-disposition 省略可能。 BLOB の Content-Disposition ヘッダーを設定します。 バージョン 2013-08-15 以降で使用できます。

応答ヘッダー フィールドは Content-Disposition 、応答ペイロードの処理方法に関する追加情報を伝達し、それを使用して追加のメタデータを添付できます。 たとえば、 ヘッダーが に attachment設定されている場合は、ユーザー エージェントが応答を表示しないことを示します。 代わりに、指定した BLOB 名以外のファイル名を含む [名前を付けて保存] ダイアログが表示されます。

Blob の取得および BLOBのプロパティの取得 操作からの応答には、 ヘッダーが content-disposition 含まれています。
Origin 省略可能。 要求の送信元を指定します。 このヘッダーが存在する場合、応答のクロス オリジン リソース共有 (CORS) ヘッダーになります。 詳細については、「 Azure Storage サービスの CORS サポート」を参照してください。
x-ms-client-request-id 省略可能。 ログ記録の構成時に分析ログに記録される 1 kibibyte (KiB) 文字制限を使用して、クライアントによって生成された不透明な値を提供します。 このヘッダーを使用して、クライアント側のアクティビティとサーバーが受信する要求を関連付けるよう強くお勧めします。 詳細については、「 ストレージ分析ログについて」を参照してください。
x-ms-access-tier 省略可能。 BLOB に設定する層。 バージョン 2017-04-17 以降のPremium Storage アカウント上のページ BLOB の場合。 ページ BLOB でサポートされる層の完全な一覧については、 仮想マシン (VM) の高パフォーマンス Premium ストレージとマネージド ディスクに関するページを参照してください。 ブロック BLOB の場合、BLOB ストレージまたは汎用 v2 アカウントでサポートされるのは、バージョン 2018-11-09 以降のみです。 ブロック BLOB 層の有効な値は、Hot、、CoolCold、および Archiveです。 ブロック BLOB の階層化の詳細については、「 ホット、クール、アーカイブ ストレージ層」を参照してください。 : Cold レベルは現在プレビュー段階であり、バージョン 2021-12-02 以降でサポートされています。
x-ms-immutability-policy-until-date バージョン 2020-06-12 以降。 BLOB に設定する 保持期間の 日付を指定します。 これは、BLOB が変更または削除されないように保護できる日付です。 RFC1123 形式に従います。
x-ms-immutability-policy-mode バージョン 2020-06-12 以降。 BLOB に設定する不変ポリシー モードを指定します。 有効値は unlocked または locked です。 では unlocked、ユーザーはリテンション期間の日付を増減することでポリシーを変更できます。 では locked、これらのアクションは禁止されています。
x-ms-legal-hold バージョン 2020-06-12 以降。 BLOB に設定する訴訟ホールドを指定します。 有効値は true または false です。

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

要求ヘッダー (ページ BLOB のみ)

ページ BLOB に対する操作にのみ適用される要求ヘッダーについては、次の表で説明します。

要求ヘッダー 説明
x-ms-blob-content-length: bytes ページ BLOB の場合は必須です。 このヘッダーは、最大 8 テビバイト (TiB) のページ BLOB の最大サイズを指定します。 ページ BLOB のサイズは 512 バイトの境界に合わせて指定する必要があります。

ブロック BLOB または追加 BLOB にこのヘッダーが指定されている場合、Blob Storage は状態コード 400 (Bad Request) を返します。
x-ms-blob-sequence-number: <num> 省略可能。 ページ BLOB の場合にのみ設定します。 シーケンス番号は、ユーザーが要求を追跡するために使用するユーザー制御の値です。 シーケンス番号の値は、0 から 2^63 - 1 である必要があります。 既定値は 0 です。
x-ms-access-tier バージョン 2017-04-17 以降。 Premium ストレージ アカウント上のページ BLOB の場合のみ。 BLOB に設定する層を指定します。 サポートされているレベルの完全な一覧については、 VM の高パフォーマンス Premium Storage とマネージド ディスクに関するページを参照してください。
x-ms-client-request-id このヘッダーは、要求と対応する応答のトラブルシューティングに使用できます。 このヘッダーの値は、要求に存在し、その値に 1,024 文字以下の ASCII 文字が含まれている場合、ヘッダーの値 x-ms-client-request-id と等しくなります。 ヘッダーが x-ms-client-request-id 要求に存在しない場合、応答には存在しません。

要求ヘッダー (顧客が指定した暗号化キー)

バージョン 2019-02-02 の時点で、顧客が指定したキーを使用して BLOB を暗号化する要求で、次のヘッダーを指定できます。 顧客が指定したキー (および対応するヘッダーのセット) を使用した暗号化は省略可能です。

要求ヘッダー 説明
x-ms-encryption-key 必須。 Base64 でエンコードされた AES-256 暗号化キー。
x-ms-encryption-key-sha256 必須。 暗号化キーの Base64 でエンコードされた SHA256 ハッシュ。
x-ms-encryption-algorithm: AES256 必須。 暗号化に使用するアルゴリズムを指定します。 このヘッダーの値は AES256 である必要があります。

要求本文

ブロック BLOB の場合、要求本文には BLOB のコンテンツが含まれます。

ページ BLOB または追加 BLOB の場合、要求本文は空です。

要求のサンプル

次の例は、ブロック BLOB を作成するための要求を示しています。

Request Syntax:  
PUT https://myaccount.blob.core.windows.net/mycontainer/myblockblob HTTP/1.1  
  
Request Headers:  
x-ms-version: 2015-02-21  
x-ms-date: <date>  
Content-Type: text/plain; charset=UTF-8  
x-ms-blob-content-disposition: attachment; filename="fname.ext"  
x-ms-blob-type: BlockBlob  
x-ms-meta-m1: v1  
x-ms-meta-m2: v2  
Authorization: SharedKey myaccount:YhuFJjN4fAR8/AmBrqBz7MG2uFinQ4rkh4dscbj598g=  
Content-Length: 11  
  
Request Body:  
hello world

このサンプル要求では、ページ BLOB を作成し、その最大サイズを 1,024 バイトとして指定します。 ページ BLOB にコンテンツを追加するには、 Put Page を呼び出す必要があります。

Request Syntax:  
PUT https://myaccount.blob.core.windows.net/mycontainer/mypageblob HTTP/1.1  
  
Request Headers:  
x-ms-version: 2015-02-21  
x-ms-date: <date>  
Content-Type: text/plain; charset=UTF-8  
x-ms-blob-type: PageBlob  
x-ms-blob-content-length: 1024  
x-ms-blob-sequence-number: 0  
Authorization: SharedKey   
Origin: http://contoso.com  
Vary: Origin  
myaccount:YhuFJjN4fAR8/AmBrqBz7MG2uFinQ4rkh4dscbj598g=  
Content-Length: 0  

このサンプル要求では、追加 BLOB を作成します。 追加 BLOB にコンテンツを追加するには、 Append Block を呼び出す必要があります。

Request Syntax:  
PUT https://myaccount.blob.core.windows.net/mycontainer/myappendblob HTTP/1.1  
  
Request Headers:  
x-ms-version: 2015-02-21  
x-ms-date: <date>  
Content-Type: text/plain; charset=UTF-8  
x-ms-blob-type: AppendBlob  
Authorization: SharedKey myaccount:YhuFJjN4fAR8/AmBrqBz7MG2uFinQ4rkh4dscbj598g=  
Origin: http://contoso.com  
Vary: Origin  
Content-Length: 0  

[応答]

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

状態コード

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

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

応答ヘッダー

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

応答ヘッダー 説明
ETag 要求ヘッダーを使用して条件付き PUT 操作を実行するためにクライアントが使用できる値を If-Match 格納します。 要求バージョンが 2011-08-18 以降の場合、ETag 値は引用符で囲まれます。
Last-Modified BLOB が最後に変更された日時。 日付形式は RFC 1123 に従います。 詳細については、「 ヘッダーの日付/時刻値を表す」を参照してください。

BLOB の書き込み操作 (BLOB のメタデータまたはプロパティの更新など) を行うと、BLOB の最終更新時刻が変更されます。
Content-MD5 クライアントがメッセージ コンテンツの整合性を確認できるように、ブロック BLOB に対して返されます。 返される値は Content-MD5 Blob Storage によって計算されます。 バージョン 2012-02-12 以降では、要求に または x-ms-blob-content-md5 ヘッダーが含Content-MD5まれていない場合でも、このヘッダーが返されます。
x-ms-content-crc64 クライアントがメッセージ コンテンツの整合性を確認できるように、ブロック BLOB に対して返されます。 返される値は x-ms-content-crc64 、Blob Storage によって計算されます。 このヘッダーは、バージョン 2019-02-02 の時点で常に返されます。
x-ms-request-id 行われた要求を一意に識別し、それを使用して要求のトラブルシューティングを行うことができます。 詳細については、「 API 操作のトラブルシューティング」を参照してください。
x-ms-version 要求の実行に使用された Blob Storage のバージョンを示します。 バージョン 2009-09-19 以降に対して行われた要求に対して返されます。
Date サービスによって生成される UTC 日付/時刻値。応答が開始された時刻を示します。
Access-Control-Allow-Origin 要求に Origin ヘッダーが含まれ、照合ルールで CORS が有効な場合に返されます。 このヘッダーは、一致する場合に配信元要求ヘッダーの値を返します。
Access-Control-Expose-Headers 要求に Origin ヘッダーが含まれ、照合ルールで CORS が有効な場合に返されます。 要求のクライアントや発行元に公開される応答ヘッダーの一覧を返します。
Access-Control-Allow-Credentials 要求にヘッダーが含まれており、すべての配信元を Origin 許可しない一致ルールで CORS が有効になっている場合に返されます。 このヘッダーは true に設定されています。
x-ms-request-server-encrypted: true/false バージョン 2015-12-11 以降。 指定したアルゴリズムを true 使用して要求の内容が正常に暗号化された場合、このヘッダーの値は に設定されます。 それ以外の場合、値は falseに設定されます。
x-ms-encryption-key-sha256 バージョン 2019-02-02 以降。 クライアントが指定されたキーを使用して要求の内容が正常に暗号化されるように、要求で顧客が指定したキーを暗号化に使用した場合に返されます。
x-ms-encryption-scope バージョン 2019-02-02 以降。 クライアントが暗号化スコープを使用して要求の内容が正常に暗号化されるように、要求が暗号化スコープを使用した場合に返されます。
x-ms-version-id: <DateTime> バージョン 2019-12-12 以降。 このヘッダーは、BLOB を一意に識別する不透明 DateTime な値を返します。 このヘッダーの値は BLOB のバージョンを示し、後続の要求で BLOB にアクセスするために使用できます。

応答本文

[なし] :

応答のサンプル

Response Status:  
HTTP/1.1 201 Created  
  
Response Headers:  
Transfer-Encoding: chunked  
Content-MD5: sQqNsWTgdUEFt6mb5y4/5Q==  
x-ms-content-crc64: 77uWZTolTHU
Date: <date>  
ETag: "0x8CB171BA9E94B0B"  
Last-Modified: <date>  
Access-Control-Allow-Origin: http://contoso.com  
Access-Control-Expose-Headers: Content-MD5  
Access-Control-Allow-Credentials: True  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0  
x-ms-version-id: <DateTime>  

承認

この操作は、アカウント所有者と、この BLOB またはそのコンテナーに書き込むアクセス許可を持つ共有アクセス署名を持つ任意のクライアントによって呼び出すことができます。

要求で要求ヘッダーを含むタグが指定されている x-ms-tags 場合、呼び出し元は BLOB タグの設定 操作の承認要件を満たす必要があります。

注釈

BLOB を作成するときは、ヘッダーの値を指定して、ブロック BLOB、追加 BLOB、またはページ BLOB のいずれであるかを指定する x-ms-blob-type 必要があります。 BLOB が作成された後は、削除して再作成しない限り、BLOB の種類を変更することはできません。

次の表では、許可されるブロックと BLOB の最大サイズをサービス のバージョン別に示します。

サービスのバージョン 最大ブロック サイズ (経由 Put Block) 最大 BLOB サイズ (経由 Put Block List) 1 回の書き込み操作による最大 BLOB サイズ (経由 Put Blob)
バージョン 2019-12-12 以降 4,000 メガバイト (MiB) 約 190.7 TiB (4,000 MiB × 50,000 ブロック) 5,000 MiB
バージョン 2016-05-31 から 2019-07-07 100 MiB 約 4.75 TiB (100 MiB × 50,000 ブロック) 256 MiB
2016-05-31 より前のバージョン 4 MiB 約 195 GiB (4 MiB × 50,000 ブロック) 64 MiB

そのサービス バージョンで許可されている最大サイズを超えるブロック BLOB または 8 TiB を超えるページ BLOB をアップロードしようとすると、サービスは状態コード 413 (要求エンティティが大きすぎます) を返します。 Blob Storage は、許可される BLOB の最大サイズ (バイト単位) を含む、応答のエラーに関する追加情報も返します。

新しいページ BLOB を作成するには、最初に を呼び出 Put Blobして BLOB を初期化し、最大サイズ (最大 8 TiB) を指定します。 ページ BLOB を作成するときは、要求本文にコンテンツを含めないでください。 BLOB が作成されたら、 Put Page を呼び出して BLOB にコンテンツを追加するか、変更します。

新しい追加 BLOB を作成するには、 を呼び出 Put Blob して、コンテンツの長さが 0 バイトの BLOB を作成します。 追加 BLOB が作成されたら、 Append Block を呼び出して、その末尾にコンテンツを追加します。

を呼び出 Put Blob して同じ名前の既存の BLOB を上書きすると、元の BLOB に関連付けられているすべてのスナップショットが保持されます。 関連付けられているスナップショットを削除するには、まず Delete Blob を呼び出し、 を呼び出 Put Blob して BLOB を再作成します。

BLOB には、標準の HTTP ヘッダーに関連付けられている値を格納するために使用できるカスタム プロパティ (ヘッダー経由で設定) があります。 その後、Get Blob Properties を呼び出してこれらの値を読み取るか、 Set Blob Properties を呼び出して変更できます。 カスタム プロパティ ヘッダーと対応する標準 HTTP ヘッダーを次の表に示します。

HTTP ヘッダー カスタム BLOB プロパティ ヘッダー
Content-Type x-ms-blob-content-type
Content-Encoding x-ms-blob-content-encoding
Content-Language x-ms-blob-content-language
Content-MD5 x-ms-blob-content-md5
Cache-Control x-ms-blob-cache-control

BLOB を使用してこれらのプロパティ値を設定または永続化するためのセマンティクスは次のとおりです。

  • クライアントが x-ms-blob プレフィックスでカスタム プロパティ ヘッダーを指定した場合、その値は BLOB に保存されます。

  • クライアントが標準の HTTP ヘッダーを指定するが、カスタム プロパティ ヘッダーを指定しない場合、値は BLOB に関連付けられている対応するカスタム プロパティに格納され、 の Get Blob Properties呼び出しによって返されます。 たとえば、クライアントが要求に Content-Type ヘッダーを設定した場合、その値は BLOB の x-ms-blob-content-type プロパティに保存されます。

  • クライアントが標準 HTTP ヘッダーと対応するプロパティ ヘッダーの両方を同じ要求に設定した場合、PUT 要求では標準 HTTP ヘッダーに指定された値が使用されますが、カスタム プロパティ ヘッダーに指定された値は BLOB で保持され、後続の GET 要求によって返されます。

ヘッダーにタグが x-ms-tags 指定されている場合は、クエリ文字列でエンコードする必要があります。 タグ キーと値は、 で指定されている名前付けと長さの要件に Set Blob Tags準拠している必要があります。 また、ヘッダーには x-ms-tags 最大 2 kb のタグを含むことができます。 さらにタグが必要な場合は、 BLOB タグの設定操作を 使用します。

BLOB にアクティブなリースがある場合、クライアントは要求で有効なリース ID を指定して BLOB を上書きする必要があります。 クライアントがリース ID を指定しない場合、または無効なリース ID を指定した場合、Blob Storage は状態コード 412 (前提条件に失敗しました) を返します。 クライアントでリース ID が指定されているが、BLOB にアクティブなリースがない場合、Blob Storage は状態コード 412 (前提条件に失敗) も返します。 クライアントでまだ存在しない BLOB のリース ID が指定されている場合、Blob Storage はバージョン 2013-08-15 以降に対して行われた要求の状態コード 412 (前提条件に失敗しました) を返します。 2013-08-15 より前のバージョンの場合、Blob Storage は状態コード 201 (作成済み) を返します。

アクティブなリースを持つ既存の BLOB が操作によって Put Blob 上書きされた場合、リースは、有効期限が切れるか解放されるまで、更新された BLOB に保持されます。

Put Blob操作は、MiB ごとに 10 分で完了できます。 操作に平均で MiB あたり 10 分を超える時間がかかる場合、操作はタイムアウトします。

BLOB の上書きがarchive失敗し、 または cool BLOB を上書きするとhot、ヘッダーが指定されていない場合、古い BLOB から層がx-ms-access-tier継承されます。

関連項目

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