Copy Blob From URL

この操作では Copy Blob From URL 、最大 256 メビバイト (MiB) のソース BLOB サイズに対して、ストレージ アカウント内の宛先に BLOB が同期的にコピーされます。 この API は、バージョン 2018-03-28 以降で使用できます。

操作の Copy Blob From URL ソースには、パブリックまたは共有アクセス署名で承認されている任意の Azure ストレージ アカウント内のコミットされたブロック BLOB を指定できます。

要求

要求は Copy Blob From URL 次のように構築できます。 HTTPS をお勧めします。 myaccount はストレージ アカウントの名前、mycontainer はコンテナーの名前に、myblob は宛先 BLOB の名前に置き換えます。

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

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

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

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

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

URI パラメーター

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

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

要求ヘッダー

次の表では、必須および省略可能な要求ヘッダーについて説明します。

要求ヘッダー 説明
Authorization 必須。 承認スキーム、アカウント名、署名を指定します。 詳細については、「Azure Storage への要求を承認する」をご覧ください。
Date または x-ms-date 必須。 要求に対して協定世界時 (UTC) を指定します。 詳細については、「Azure Storage への要求を承認する」をご覧ください。
x-ms-version すべての承認された要求に必要です。 詳細については、「Azure Storage サービスのバージョン管理」を参照してください。
x-ms-meta-name:value 省略可能。 BLOB に関連付けられているユーザー定義の名前と値のペアを指定します。 名前と値のペアが指定されていない場合、操作によって、ソース BLOB またはファイルからコピー先 BLOB にメタデータがコピーされます。 1 つ以上の名前と値のペアが指定されている場合、ターゲット BLOB は指定されたメタデータで作成され、メタデータはソース BLOB またはファイルからコピーされません。

バージョン 2009-09-19 以降では、メタデータ名は C# 識別子の名前付け規則に従う必要があります。 詳細については、「コンテナー、 BLOB、メタデータの名前付けと参照」を参照してください。
x-ms-encryption-scope 省略可能。 要求の内容を暗号化するための暗号化スコープを示します。 このヘッダーは、バージョン 2020-12-06 以降でサポートされています。
x-ms-tags 省略可能。 BLOB にクエリ文字列でエンコードされたタグを設定します。 タグはコピー 元からコピーされません。 詳細については、「解説」をご覧ください。 バージョン 2019-12-12 以降でサポートされています。
x-ms-copy-source-tag-option 省略可能。 使用できる値は REPLACE と です (大文字と COPY 小文字は区別されます)。 既定値は REPLACE です。

が指定されている場合 COPY 、ソース BLOB のタグがコピー先 BLOB にコピーされます。 ソース BLOB はプライベートである必要があり、要求には、ソース BLOB に対する BLOB タグの取得 操作と、コピー先 BLOB に対する BLOB タグの設定 操作に対するアクセス許可が必要です。 これにより、ソース アカウントに対する操作の追加の Get Blob Tags 呼び出しが発生します。

REPLACE は、ヘッダーが x-ms-tags 宛先 BLOB に指定するタグを設定します。 タグをREPLACE指定し、タグを指定しない場合x-ms-tags、ターゲット BLOB にタグは設定されません。 と x-ms-tagsCOPY指定すると、409 (競合) エラーが発生します。

バージョン 2021-04-10 以降でサポートされています。
x-ms-source-if-modified-since 省略可能。 DateTime 値。 この条件ヘッダーを指定すると、コピー元 BLOB が指定した日付/時刻以降に変更された場合にのみ BLOB がコピーされます。 ソース BLOB が変更されていない場合、Blob Storage は状態コード 412 (前提条件に失敗しました) を返します。 ソースが Azure ファイルの場合、このヘッダーを指定することはできません。
x-ms-source-if-unmodified-since 省略可能。 DateTime 値。 この条件ヘッダーを指定すると、コピー元 BLOB が指定した日付/時刻以降に変更されなかった場合にのみ BLOB がコピーされます。 ソース BLOB が変更された場合、Blob Storage は状態コード 412 (前提条件に失敗しました) を返します。 ソースが Azure ファイルの場合、このヘッダーを指定することはできません。
x-ms-source-if-match 省略可能。 ETag 値。 この条件付きヘッダーを指定して、ソース BLOB の値が指定された値と ETag 一致する場合にのみコピーします。 値が一致しない場合、Blob Storage は状態コード 412 (前提条件に失敗しました) を返します。 ソースが Azure ファイルの場合、このヘッダーを指定することはできません。
x-ms-source-if-none-match 省略可能。 ETag 値。 BLOB の値が指定された値と一致しない場合 ETag にのみ、この条件付きヘッダーを指定して BLOB をコピーします。 値が同じ場合、Blob Storage は状態コード 412 (前提条件失敗) を返します。 ソースが Azure ファイルの場合、このヘッダーを指定することはできません。
If-Modified-Since 省略可能。 DateTime 値。 この条件ヘッダーを指定すると、コピー先 BLOB が指定した日付/時刻以降に変更された場合にのみ BLOB がコピーされます。 コピー先の BLOB が変更されていない場合、Blob Storage は状態コード 412 (前提条件に失敗しました) を返します。
If-Unmodified-Since 省略可能。 DateTime 値。 この条件ヘッダーを指定すると、コピー先 BLOB が指定した日付/時刻以降に変更されなかった場合にのみ BLOB がコピーされます。 コピー先の BLOB が変更された場合、Blob Storage は状態コード 412 (前提条件に失敗しました) を返します。
If-Match 省略可能。 ETag 値。 指定した値がETag既存のターゲット BLOB の値と一致する場合にのみ、この条件付きヘッダーのETag値を指定ETagして BLOB をコピーします。 値が一致しない場合、Blob Storage は状態コード 412 (前提条件に失敗しました) を返します。
If-None-Match 省略可能。 ETag値、またはワイルドカード文字 (*)。

指定したETag値がコピー先 BLOB の値と一致しない場合にのみ、この条件付きヘッダーの値をETag指定ETagして BLOB をコピーします。

ワイルドカード文字 (*) を指定して、コピー先 BLOB が存在しない場合にのみ操作を実行します。

指定した条件が満たされていない場合、Blob Storage は状態コード 412 (前提条件に失敗しました) を返します。
x-ms-copy-source:name 必須。 ソース BLOB の URL を指定します。 値には、BLOB を指定する最大 2 kibibytes (KiB) の長さの URL を指定できます。 この値は要求 URI に含まれるため、URL でエンコードされる必要があります。 ソース BLOB はパブリックであるか、共有アクセス署名を介して承認されている必要があります。 ソース BLOB がパブリックの場合、操作を実行するために承認は必要ありません。 ソース BLOB のサイズが 256 MiB を超える場合、要求は 409 (競合) エラーで失敗します。 ソース BLOB の BLOB の種類は、ブロック BLOB である必要があります。 ソース オブジェクト URL の例を次に示します。

- https://myaccount.blob.core.windows.net/mycontainer/myblob
- https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>
- https://myaccount.blob.core.windows.net/mycontainer/myblob?versionid=<DateTime>
x-ms-copy-source-authorization: <scheme> <signature> 省略可能。 コピー ソースの承認スキームと署名を指定します。 詳細については、「Azure Storage への要求を承認する」をご覧ください。
Azure Active Directory では、スキーム ベアラーのみがサポートされています。
このヘッダーは、バージョン 2020-10-02 以降でサポートされています。
x-ms-requires-sync:true 必須。 これは非同期操作ではなくCopy Blob同期Copy Blob From URL操作であることを示します。
x-ms-source-content-md5 省略可能。 URI からの BLOB コンテンツの MD5 ハッシュを指定します。 このハッシュは、URI からのデータの転送中に BLOB の整合性を確認するために使用されます。 このヘッダーを指定すると、ストレージ サービスは、コピー ソースから到着したコンテンツのハッシュをこのヘッダー値と比較します。

MD5 ハッシュは BLOB と共に格納されません。

2 つのハッシュが一致しない場合、操作はエラー コード 400 (無効な要求) で失敗します。
x-ms-lease-id:<ID> コピー先 BLOB にアクティブなリースが存在する場合は必須です。 このヘッダーに指定するリース ID は、コピー先 BLOB のリース ID と一致している必要があります。 要求にリース ID が含まれていないか、有効でない場合、状態コード 412 (前提条件が失敗) で操作が失敗します。

このヘッダーが指定されていて、ターゲット BLOB に現在アクティブなリースがない場合、操作は状態コード 412 (前提条件に失敗) で失敗します。

バージョン 2012-02-12 以降では、この値はリースされた BLOB のアクティブな無限リースを指定する必要があります。 有限期間リース ID が状態コード 412 (前提条件に失敗しました) で失敗します。
x-ms-client-request-id 省略可能。 ログ記録の構成時にログに記録される 1 KiB 文字の制限を持つクライアント生成の不透明な値を提供します。 このヘッダーを使用して、クライアント側のアクティビティとサーバーが受信する要求を関連付けるよう強くお勧めします。
x-ms-access-tier 省略可能。 ターゲット BLOB に設定する層を指定します。 このヘッダーは、バージョン 2017-04-17 以降の Premium アカウントのページ BLOB 用です。 サポートされているレベルの完全な一覧については、 VM の高パフォーマンス Premium Storage とマネージド ディスクに関するページを参照してください。 このヘッダーは、ブロック BLOB のバージョン 2018-11-09 以降でサポートされています。 ブロック BLOB の階層化は、Blob Storage または General Purpose v2 アカウントでサポートされています。 有効な値は、HotCoolColdArchive です。 メモ:Cold レベルは、バージョン 2021-12-02 以降でサポートされています。 ブロック BLOB の階層化の詳細については、「 ホット、クール、アーカイブのストレージ層」を参照してください。

要求本文

[なし] :

Response

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

status code

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

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

応答ヘッダー

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

応答ヘッダー 説明
ETag コピーが完了した場合は、コピー先 BLOB の ETag 値が格納されます。 コピーが完了していない場合は、コピーの開始時に ETag 作成された空の BLOB の値が含まれます。

値は ETag 引用符で囲まれています。
Last-Modified コピー先 BLOB へのコピー操作が完了した日付/時刻を返します。
x-ms-request-id 行われた要求を一意に識別します。 これを使用して、要求のトラブルシューティングを行うことができます。 詳細については、「 API 操作のトラブルシューティング」を参照してください。
x-ms-version 要求の実行に使用される Blob Storage のバージョンを示します。
Date サービスが応答を送信した時刻を示す UTC 日付/時刻値。
x-ms-copy-id: <id> このコピー操作の文字列の識別子。
x-ms-copy-status: <success> コピー操作の状態を示します。 の success 値は、操作が正常に完了したことを意味します。
x-ms-client-request-id 要求と対応する応答のトラブルシューティングに使用できます。 このヘッダーの値は、要求に存在し、その値 x-ms-client-request-id が最大 1,024 文字の可視 ASCII 文字である場合、ヘッダーの値と同じです。 ヘッダーが x-ms-client-request-id 要求に存在しない場合、このヘッダーは応答に存在しません。
x-ms-request-server-encrypted: true/false 指定したアルゴリズムを使用して要求の内容が正常に暗号化された場合は、 を に true 設定します。 それ以外の場合、値は falseに設定されます。
x-ms-encryption-scope 要求が暗号化スコープを使用した場合に返されます。これにより、クライアントは、要求の内容が暗号化スコープを通じて正常に暗号化されるようにすることができます。

応答本文

[なし] :

応答のサンプル

次に示すのは、BLOB コピー要求に対する応答の例です。

Response Status:  
HTTP/1.1 202 Accepted  
  
Response Headers:   
Last-Modified: <date>   
ETag: "0x8CEB669D794AFE2"  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0  
x-ms-request-id: cc6b209a-b593-4be1-a38a-dde7c106f402  
x-ms-version: 2018-03-28  
x-ms-copy-id: 1f812371-a41d-49e6-b123-f4b542e851c5  
x-ms-copy-status: success  
Date: <date>  
  

承認

Azure Storage でデータ アクセス操作を呼び出す場合は、承認が必要です。 次の表では、操作の宛先オブジェクトとソース オブジェクトを Copy Blob From URL 承認する方法について説明します。

オブジェクトの種類 Microsoft Entra ID承認 Shared Access Signature (SAS) 承認 共有キーの承認 (または共有キー ライト)
宛先ブロック BLOB Yes Yes Yes
同じストレージ アカウント内のソース ブロック BLOB Yes Yes Yes
別のストレージ アカウント内のソース ブロック BLOB いいえ はい いいえ

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

操作は、以下で Copy Blob From URL 説明するように承認できます。 別のストレージ アカウント内のソース BLOB は、 読み取り (r) アクセス許可を持つ SAS トークンを介して個別に承認する必要があることに注意してください。 ソース BLOB 承認の詳細については、要求ヘッダー x-ms-copy-sourceの詳細を参照してください。

Azure Storage では、Microsoft Entra IDを使用して BLOB データへの要求を承認することがサポートされています。 Microsoft Entra IDでは、Azure ロールベースのアクセス制御 (Azure RBAC) を使用して、セキュリティ プリンシパルにアクセス許可を付与できます。 セキュリティ プリンシパルには、ユーザー、グループ、アプリケーション サービス プリンシパル、または Azure マネージド ID を指定できます。 セキュリティ プリンシパルは、OAuth 2.0 トークンを返すためにMicrosoft Entra IDによって認証されます。 その後、そのトークンを、Blob service に対する要求を認可するために使用できます。

Microsoft Entra IDを使用した承認の詳細については、「Microsoft Entra IDを使用して BLOB へのアクセスを承認する」を参照してください。

アクセス許可

Microsoft Entraユーザー、グループ、またはサービス プリンシパルが操作を呼び出Copy Blob From URLすために必要な RBAC アクションと、このアクションを含む最小限の特権を持つ組み込み Azure RBAC ロールを次に示します。

宛先 BLOB

同じストレージ アカウント内のソース BLOB

Azure RBAC を使用したロールの割り当ての詳細については、「 BLOB データにアクセスするための Azure ロールの割り当て」を参照してください。

注釈

操作のソース BLOB とターゲット BLOB は Copy Blob From URL ブロック BLOB である必要があります。

バージョン 2020-10-02 以降では、コピー操作のソースに対して Azure Active Directory 承認がサポートされています。

Copy Blob From URL 操作では、常にソース BLOB 全体がコピーされます。 バイト範囲またはブロックのセットのコピーはサポートされていません。

ソース BLOB は、別の名前のコピー先 BLOB にコピーできます。 コピー先の BLOB には、既存のブロック BLOB を指定することも、コピー操作で作成する新しい BLOB を指定することもできます。

ブロック BLOB からコピーすると、コミットされたすべてのブロックとそのブロック ID がコピーされます。 コミットされていないブロックはコピーされません。 コピー操作の最後に、コピー先 BLOB のコミット済みブロック数はソースと同じになります。

ブロック BLOB の値は ETag 、操作の Copy Blob From URL 開始時と操作の終了時に変更されます。

BLOB のプロパティとメタデータのコピー

ブロック BLOB がコピーされると、次のシステム プロパティが同じ値を持つコピー先 BLOB にコピーされます。

  • Content-Type

  • Content-Encoding

  • Content-Language

  • Content-Length

  • Cache-Control

  • Content-MD5

  • Content-Disposition

ソース BLOB のコミット済みブロック リストも、コピー先 BLOB にコピーされます。 コミット前のブロックはコピーされません。

ターゲット BLOB は常にソース BLOB と同じサイズであるため、ターゲット BLOB のヘッダーの Content-Length 値は、ソース BLOB のそのヘッダーの値と一致します。

ヘッダーが x-ms-tags 宛先 BLOB のタグを提供する場合は、クエリ文字列でエンコードする必要があります。 タグ キーと値は、 BLOB タグの設定 操作で指定された名前付けと長さの要件に準拠している必要があります。

ヘッダーには x-ms-tags 、最大 2 キロビットのタグを含めることができます。 さらにタグが必要な場合は、 操作を使用します Set Blob Tags

ヘッダーに x-ms-tags タグが指定されていない場合、タグはソース BLOB からコピーされません。

リースされた BLOB のコピー

操作は Copy Blob From URL ソース BLOB からのみ読み取られます。そのため、ソース BLOB のリース状態は関係ありません。

請求

価格要求は、Blob Storage REST API を介して直接、または Azure Storage クライアント ライブラリから Blob Storage API を使用するクライアントから送信できます。 これらの要求では、トランザクションあたりの料金が発生します。 トランザクションの種類は、アカウントの課金方法に影響します。 たとえば、読み取りトランザクションは、書き込みトランザクションとは異なる課金カテゴリに計上されます。 次の表は、ストレージ アカウントの種類に基づく要求の課金カテゴリ Copy Blob From URL を示しています。

操作 ストレージ アカウントの種類 課金カテゴリ
URL から BLOB をコピーする (宛先アカウント1) Premium ブロック BLOB
Standard 汎用 v2
Standard 汎用 v1
書き込み操作
URL から BLOB をコピーする (ソース アカウント2) Premium ブロック BLOB
Standard 汎用 v2
Standard 汎用 v1
操作を読み取ります。

1宛先アカウントは、書き込みを開始する 1 つのトランザクションに対して課金されます。
2ソース アカウントでは、ソース オブジェクトに対する読み取り要求ごとに 1 つのトランザクションが発生します。

指定した課金カテゴリの価格については、「Azure Blob Storage価格」を参照してください。

さらに、送信元アカウントと移行先アカウントが異なるリージョン (米国北部や米国南部など) に存在する場合、要求の転送に使用する帯域幅はエグレスとしてソース ストレージ アカウントに課金されます。 同じ地域内のアカウント間の送信は無料です。

同じアカウント内の別の名前を持つコピー先 BLOB にソース BLOB をコピーする場合は、新しい BLOB に追加のストレージ リソースを使用します。 その後、コピー操作により、これらの追加リソースに対するストレージ アカウントの容量使用量に対する料金が発生します。

こちらもご覧ください

Azure Storage への要求を承認する
状態コードとエラー コード
Blob Storage のエラー コード
スナップショットの料金の計上方法について