次の方法で共有


URL から BLOB をコピー

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 任意。 指定できる値は REPLACECOPY です (大文字と小文字が区別されます)。 既定値は REPLACE です。

COPYを指定すると、ソース BLOB のタグがコピー先 BLOB にコピーされます。 ソース BLOB はプライベートである必要があり、要求には、ソース BLOB に対する Get Blob Tags 操作と、ターゲット BLOB に対する Set Blob Tags 操作に対するアクセス許可が必要です。 これにより、ソースアカウントでの Get Blob Tags オペレーションへの追加の呼び出しが発生します。

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

バージョン 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 がコピーされます。 値が一致しない場合、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 値を指定すると、指定した ETag 値が既存のコピー先 BLOB の ETag 値と一致する場合にのみ BLOB がコピーされます。 値が一致しない場合、Blob Storage は状態コード 412 (前提条件に失敗しました) を返します。
If-None-Match 任意。 ETag値、またはワイルドカード文字 (*)。

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

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

指定した条件が満たされない場合、Blob Storage はステータス コード 412 (前提条件に失敗しました) を返します。
x-ms-copy-source:name 必須。 ソース BLOB の URL を指定します。 値には、BLOB を指定する最大 2 キビバイト (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への要求を承認する」を参照してください。
Microsoft Entra では、スキーム ベアラーのみがサポートされています。
このヘッダーは、バージョン 2020-10-02 以降でサポートされています。
x-ms-requires-sync:true 必須。 これが非同期Copy Blob From URL操作ではなく同期Copy Blob操作であることを示します。
x-ms-source-content-md5 任意。 URI の BLOB コンテンツの MD5 ハッシュを指定します。 このハッシュは、URI からのデータの転送中に BLOB の整合性を確認するために使用されます。 このヘッダーを指定すると、ストレージ サービスは、コピー元から到着したコンテンツのハッシュとこのヘッダー値を比較します。

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

2 つのハッシュが一致しない場合、操作はエラー コード 400 (Bad Request) で失敗します。
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 以降のプレミアム アカウントのみのページ BLOB 用です。 サポートされているレベルの完全な一覧については、「 VM の高パフォーマンスの Premium Storage とマネージド ディスク」を参照してください。 このヘッダーは、ブロック BLOB のバージョン 2018-11-09 以降でサポートされています。 ブロック BLOB の階層化は、Blob Storage または General Purpose v2 アカウントでサポートされています。 有効な値は、HotCoolCold、および Archiveです。 注:Cold レベルは、バージョン 2021-12-02 以降でサポートされています。 ブロック BLOB の階層化の詳細については 、「ホット、クール、アーカイブ ストレージ層」を参照してください。
x-ms-file-request-intent x-ms-copy-sourceヘッダーが Azure ファイルの URL で、x-ms-copy-source-authorizationヘッダーが OAuth トークンを指定している場合は必須です。 許容される値は backupです。 このヘッダーは、Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action または Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action が、x-ms-copy-source-authorization ヘッダーを使用して承認された ID に割り当てられた RBAC ポリシーに含まれている場合に付与されるように指定します。 バージョン 2025-07-05 以降で使用できます。

リクエストの本文

なし。

[応答]

応答には、HTTP 状態コードと一連の応答ヘッダーが含まれます。

状態コード

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

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

応答ヘッダー

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

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

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 要求と対応する応答のトラブルシューティングに使用できます。 このヘッダーの値は、要求に存在し、値が最大 1,024 文字表示される ASCII 文字である場合、x-ms-client-request-id ヘッダーの値と等しくなります。 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) の承認 共有キー認証(または共有キーLite)
宛先ブロック BLOB イエス イエス イエス
同じストレージ アカウント内のソース ブロック BLOB イエス イエス イエス
別のストレージ アカウント内のソース ブロック BLOB いいえ イエス いいえ

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

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

Von Bedeutung

Microsoft では、マネージド ID で Microsoft Entra ID を使用して、Azure Storage への要求を承認することをお勧めします。 Microsoft Entra ID は、共有キーの承認と比較して優れたセキュリティと使いやすさを提供します。

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

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

権限

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

宛先 BLOB

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

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

注釈

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

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

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 のタグが提供されている場合は、クエリ文字列でエンコードする必要があります。 タグのキーと値は、 Set Blob Tags 操作で指定された名前付けと長さの要件に準拠している必要があります。

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

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

リースされた BLOB のコピー

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

請求書

価格要求は、Blob Storage API を使用するクライアントから、Blob Storage REST API を介して直接、または Azure Storage クライアント ライブラリから送信できます。 これらの要求には、トランザクションあたりの料金が発生します。 トランザクションの種類は、アカウントの課金方法に影響します。 たとえば、読み取りトランザクションは、書き込みトランザクションとは異なる課金カテゴリに発生します。 次の表に、ストレージ アカウントの種類に基づく 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 のエラー コード
スナップショットの料金発生方法を理解する