BLOB のコピー
Copy Blob
操作は、BLOB をストレージ アカウント内にコピーします。
バージョン 2012-02-12 以降では、操作の Copy Blob
ソースは、任意の Azure ストレージ アカウント内のコミット済み BLOB にすることができます。
バージョン 2015-02-21 以降では、操作の Copy Blob
ソースは任意の Azure ストレージ アカウント内の Azure ファイルにすることができます。
注意
2012 年 6 月 7 日以降に作成されたストレージ アカウントのみ、操作を別の Copy Blob
ストレージ アカウントからコピーできます。
要求は Copy Blob
次のように構築できます。 HTTPS をお勧めします。
myaccount はストレージ アカウントの名前、mycontainer はコンテナーの名前に、myblob は宛先 BLOB の名前に置き換えます。
バージョン 2013-08-15 以降では、コピー先 BLOB がソース BLOB と同じアカウントにある場合は、コピー先 BLOB の共有アクセス署名 (SAS) を指定できます。 バージョン 2015-04-05 以降では、コピー先 BLOB が別のストレージ アカウントにある場合は、共有アクセス署名を指定することもできます。
PUT メソッド要求 URI | HTTP バージョン |
---|---|
https://myaccount.blob.core.windows.net/mycontainer/myblob |
HTTP/1.1 |
エミュレートされたストレージ サービスに対して要求を行う場合は、エミュレーター ホスト名と 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 に指定できます。
パラメーター | 説明 |
---|---|
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-tags |
省略可能。 BLOB に指定されたクエリ文字列でエンコードされたタグを設定します。 タグはコピー 元からコピーされません。 詳細については、「解説」をご覧ください。 バージョン 2019-12-12 以降でサポートされています。 |
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 またはファイルの名前を指定します。 バージョン 2012-02-12 以降では、この値には、BLOB を指定する最大 2 kibibytes (KiB) の長さの URL を指定できます。 値は、要求 URI に表示されるため、URL エンコードされている必要があります。 同じストレージ アカウント内のソース BLOB に対する読み取り操作は、共有キーを介して承認できます。 バージョン 2017-11-09 以降では、Microsoft Entra IDを使用して、ソース BLOB の読み取り操作を承認することもできます。 ただし、ソースが別のストレージ アカウント内の BLOB の場合、ソース BLOB はパブリックであるか、共有アクセス署名を介してアクセスが承認されている必要があります。 ソース BLOB がパブリックの場合、コピー操作を実行するために承認は必要ありません。 バージョン 2015-02-21 以降では、ソース オブジェクトは Azure Files 内のファイルにすることができます。 ソース オブジェクトが BLOB にコピーされるファイルの場合、ソース ファイルは、同じアカウントに存在するか別のアカウントに存在するかに関係なく、共有アクセス署名を通じて承認される必要があります。 2012 年 6 月 7 日以降に作成されたストレージ アカウントでのみ、操作を別の Copy 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> ソース オブジェクトがAzure Filesのファイルである場合、ソース URL は次の形式を使用します。 URL には、ファイルの有効な SAS トークンを含める必要があることに注意してください。 - https://myaccount.file.core.windows.net/myshare/mydirectorypath/myfile?sastoken 2012-02-12 より前のバージョンでは、BLOB は同じアカウント内でのみコピーでき、ソース名では次の形式を使用できます。 - 名前付きコンテナー内の BLOB: /accountName/containerName/blobName - 名前付きコンテナー内のスナップショット: /accountName/containerName/blobName?snapshot=<DateTime> - ルート コンテナー内の BLOB: /accountName/blobName - ルート コンテナー内のスナップショット: /accountName/blobName?snapshot=<DateTime> |
x-ms-lease-id:<ID> |
コピー先 BLOB にアクティブなリースが存在する場合は必須です。 このヘッダーに指定するリース ID は、コピー先 BLOB のリース ID と一致している必要があります。 要求にリース ID が含まれていない場合、または ID が有効でない場合、操作は状態コード 412 (前提条件に失敗) で失敗します。 このヘッダーが指定されていて、ターゲット BLOB に現在アクティブなリースがない場合、操作は状態コード 412 (前提条件に失敗) で失敗します。 バージョン 2012-02-12 以降では、この値はリースされた BLOB のアクティブな無限リースを指定する必要があります。 有限期間のリース ID が状態コード 412 (前提条件に失敗) で失敗します。 |
x-ms-source-lease-id: <ID> |
2012-02-12 より前のバージョンでは省略可能 (2012-02-12 以降ではサポートされていません)。 指定されたリース ID がソース BLOB の Copy Blob アクティブなリース ID と一致する場合にのみ、このヘッダーを指定して操作を実行します。このヘッダーが指定されていて、ソース BLOB に現在アクティブなリースがない場合、操作は状態コード 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 アカウントでサポートされています。 有効な値は、 Hot 、 Cool 、 Cold および Archive です。
メモ:Cold レベルは、バージョン 2021-12-02 以降でサポートされています。 ブロック BLOB の階層化の詳細については、「 ホット、クール、アーカイブ ストレージ層」を参照してください。 |
x-ms-rehydrate-priority |
省略可能。 アーカイブされた BLOB をリハイドレートする優先度を示します。 このヘッダーは、ブロック BLOB のバージョン 2019-02-02 以降でサポートされています。 有効値は High または Standard です。 BLOB の優先度は 1 回だけ設定できます。 このヘッダーは、同じ BLOB に対する後続の要求では無視されます。 このヘッダーのない既定の優先度は です Standard 。 |
x-ms-seal-blob |
省略可能。 バージョン 2019-12-12 以降でサポートされています。 このヘッダーは、追加 BLOB に対してのみ有効です。 コピー操作が完了した後、コピー先 BLOB をシールします。 |
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 です。 |
この操作では、指定した条件が x-ms-if-tags
満たされた場合にのみ、 と x-ms-source-if-tags
の条件付きヘッダーが成功するようにサポートされます。 詳細については、「 Blob Storage 操作の条件付きヘッダーを指定する」を参照してください。
[なし] :
応答には、HTTP 状態コードおよび一連の応答ヘッダーが含まれています。
バージョン 2012-02-12 以降では、正常な操作は状態コード 202 (Accepted) を返します。
2012-02-12 より前のバージョンでは、操作が正常に終了すると、ステータス コード 201 (Created) が返されます。
状態コードの詳細については、「 状態とエラー コード」を参照してください。
この操作の応答には、次のヘッダーが含まれています。 応答に追加の標準 HTTP ヘッダーが含まれる場合もあります。 すべての標準ヘッダーは 、HTTP/1.1 プロトコル仕様に準拠しています。
応答ヘッダー | 説明 |
---|---|
ETag |
バージョン 2012-02-12 以降では、コピーが完了した場合、このヘッダーにはコピー先 BLOB の値が含まれます ETag 。 コピーが完了していない場合、ヘッダーには、コピー操作の開始時に作成された空の BLOB の値が含まれます ETag 。2012-02-12 より前のバージョンでは、このヘッダーはターゲット BLOB の ETag 値を返します。バージョン 2011-08-18 以降では、 ETag 値は引用符で囲まれています。 |
Last-Modified |
コピー先 BLOB へのコピー操作が完了した日付/時刻を返します。 |
x-ms-request-id |
行われた要求を一意に識別します。 このヘッダーを使用して、要求のトラブルシューティングを行うことができます。 詳細については、「 API 操作のトラブルシューティング」を参照してください。 |
x-ms-version |
要求の実行に使用される Blob Storage のバージョンを示します。 このヘッダーはバージョン 2009-09-19 以降で行った要求に対して返されます。 |
Date |
サービスが応答を送信した時刻を示す UTC 日付/時刻値。 |
x-ms-copy-id: <id> |
バージョン 2012-02-12 以降。 このコピー操作の文字列識別子を提供します。 または Get Blob Properties を使用Get Blob して、このコピー操作の状態をチェックするか、 を にAbort Copy Blob 渡して保留中のコピー操作を取り消します。 |
x-ms-copy-status: <success ¦ pending> |
バージョン 2012-02-12 以降。 次の値を使用して、コピー操作の状態を示します。 - success : 操作が正常に完了しました。- pending : 操作が進行中です。 |
x-ms-version-id: <DateTime> |
バージョン 2019-12-12 以降。 BLOB をバージョン別に一意に識別します。 この不透明な値は、後続の要求で使用して、このバージョンの BLOB にアクセスできます。 |
x-ms-client-request-id |
要求と対応する応答のトラブルシューティングに使用できます。 このヘッダーの値は、要求に存在し、その値が最大 1,024 文字の可視 ASCII 文字である場合、ヘッダーの値 x-ms-client-request-id と等しくなります。 ヘッダーが x-ms-client-request-id 要求に存在しない場合、このヘッダーは応答に存在しません。 |
[なし] :
次のコードは、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: 2015-02-21
x-ms-copy-id: 1f812371-a41d-49e6-b123-f4b542e851c5
x-ms-copy-status: pending
x-ms-version-id: <DateTime>
Date: <date>
Azure Storage でデータ アクセス操作を呼び出す場合は、承認が必要です。 次の表は、操作の宛先オブジェクトとソース オブジェクトを承認する方法を Copy Blob
示しています。
オブジェクトの種類 | Microsoft Entra ID承認 | Shared Access Signature (SAS) 承認 | 共有キーの承認 (または共有キー ライト) |
---|---|---|---|
宛先 BLOB | Yes | Yes | Yes |
同じストレージ アカウント内のソース BLOB | Yes | Yes | Yes |
別のストレージ アカウント内のソース BLOB | いいえ | はい | いいえ |
要求で要求ヘッダーにタグが x-ms-tags
指定されている場合、呼び出し元は BLOB タグの設定 操作の承認要件を満たす必要があります。
以下で説明するように、操作を Copy Blob
承認できます。 別のストレージ アカウント内のソース BLOB は、 読み取り (r) アクセス許可を持つ SAS トークンを介して個別に承認する必要があることに注意してください。 ソース BLOB の承認の詳細については、要求ヘッダー x-ms-copy-source
の詳細を参照してください。
重要
Microsoft では、マネージド ID でMicrosoft Entra IDを使用して、Azure Storage への要求を承認することをお勧めします。 Microsoft Entra IDは、共有キーの承認と比較して優れたセキュリティと使いやすさを提供します。
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ユーザー、グループ、マネージド ID、またはサービス プリンシパルが操作を呼び出Copy Blob
すために必要な RBAC アクションと、このアクションを含む最小特権の組み込み Azure RBAC ロールを次に示します。
- Azure RBAC アクション:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write (既存の BLOB への書き込み用) または Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action (新しい BLOB を宛先に書き込むため)
- 最小特権の組み込みロール:ストレージ BLOB データ共同作成者
- Azure RBAC アクション:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
- 最小特権の組み込みロール:ストレージ BLOB データ閲覧者
Azure RBAC を使用したロールの割り当ての詳細については、「 BLOB データにアクセスするための Azure ロールの割り当て」を参照してください。
バージョン 2012-02-12 以降では、操作は Copy Blob
非同期的に完了できます。 この操作は、コピー操作をチェックまたは取り消すために使用できるコピー ID を返します。 コピー操作の非同期性により、Blob Storage はベスト エフォートベースで BLOB をコピーします。 BLOB サービスは、サーバー リソースが他のタスクによって利用されていない場合に BLOB をコピーするため、コピーが指定された期間内にすぐに開始または完了することは保証されません。
コピー操作のソース BLOB には、ブロック BLOB、追加 BLOB、ページ BLOB、またはスナップショットがあります。 コピー先 BLOB が既に存在する場合、コピー元 BLOB と同じ BLOB の種類である必要があります。 既存のコピー先 BLOB はすべて上書きされます。 コピー操作の進行中は、コピー先 BLOB を変更できません。
バージョン 2015-02-21 以降では、コピー操作のソースを Azure Files 内のファイルにすることもできます。 ソースがファイルの場合、変換先はブロック BLOB である必要があります。
アカウント内に保留中の Copy Blob
操作が複数ある場合、これらの操作は順番に処理されます。 宛先 BLOB に含めることができる未処理 Copy Blob
の操作は 1 つだけです。 言い換えると、BLOB を複数の保留中 Copy Blob
の操作の宛先にすることはできません。 既にコピー操作が保留中のコピー先 BLOB に BLOB をコピーしようとすると、状態コード 409 (競合) で失敗します。
2012 年 6 月 7 日以降に作成されたストレージ アカウントでのみ、操作を別の Copy Blob
ストレージ アカウントからコピーできます。 2012 年 6 月 7 日より前に作成されたアカウントに別のストレージ アカウントからコピーしようとすると、状態コード 400 (無効な要求) で失敗します。
この操作では Copy Blob
、常にソース BLOB またはファイル全体がコピーされます。 バイト範囲またはブロックのセットのコピーはサポートされていません。
Copy Blob
操作は、次の方法で使用できます。
ソース BLOB は、別の名前のコピー先 BLOB にコピーできます。 コピー先 BLOB には、同じ BLOB の種類 (ブロック、追加、またはページ) の既存の BLOB を指定することも、コピー操作で作成する新しい BLOB を指定することもできます。
ソース BLOB を、同じ名前のコピー先 BLOB にコピーし、実質的にコピー先 BLOB を置き換えることができます。 この方法でコピー操作を実行すると、コミットされていないブロックは削除され、BLOB のメタデータは上書きされます。
Azure Files内のソース ファイルをコピー先 BLOB にコピーできます。 コピー先の BLOB には、既存のブロック BLOB を指定することも、コピー操作で作成する新しいブロック BLOB を指定することもできます。 ファイルからページ BLOB またはアペンド BLOB へのコピーはサポートされていません。
スナップショットをベース BLOB にコピーします。 スナップショットをベース BLOB に昇格することにより、BLOB を以前のバージョンに復元できます。
スナップショットは、別の名前の宛先 BLOB にコピーできます。 結果として得られるコピー先 BLOB は書き込み可能な BLOB であり、スナップショットではありません。
ページ BLOB からコピーする場合、Blob Storage によって、ソース BLOB の長さのコピー先ページ BLOB が作成されます。 最初は、ページ BLOB にはすべてのゼロが含まれます。 その後、コピー元ページの範囲が列挙され、空以外の範囲がコピーされます。
ブロック BLOB または追加 BLOB の場合、Blob Storage は、この操作から戻る前に、長さが 0 のコミット済み BLOB を作成します。
ブロック BLOB からコピーすると、コミットされたすべてのブロックとそのブロック ID がコピーされます。 コミットされていないブロックはコピーされません。 コピー操作の最後に、コピー先 BLOB のコミット済みブロック数はソースと同じです。
追加 BLOB からコピーすると、コミットされたすべてのブロックがコピーされます。 コピー操作の最後に、コピー先 BLOB のコミット済みブロックの数が、ソース BLOB と同じ数または数未満になります。
すべての BLOB の種類について、コピー先 BLOB で または Get Blob Properties
を呼び出Get Blob
して、コピー操作の状態をチェックできます。 コピー操作が完了すると、最終的な BLOB がコミットされます。
コピー操作のソースが値を提供 ETag
すると、コピー操作の進行中にソースに対する変更が行われると、その操作は失敗します。 コピーの進行中にコピー先 BLOB を変更しようとすると、状態コード 409 (競合) で失敗します。 コピー先 BLOB に無限リースがある場合、リース ID を Copy Blob
に渡す必要があります。 期間が有限のリースは許可されていません。
ブロック BLOB の値は ETag
、操作の Copy Blob
開始時と操作の終了時に変更されます。 ページ BLOB の値は ETag
、操作の開始時に Copy Blob
変更され、コピー操作中も頻繁に変更されます。 ブロック BLOB の内容は、完全コピー操作が Get
完了した後にのみ、コマンドを使用して表示されます。
BLOB がコピーされると、次のシステム プロパティが、同じ値を持つコピー先 BLOB にコピーされます。
Content-Type
Content-Encoding
Content-Language
Content-Length
Cache-Control
Content-MD5
Content-Disposition
x-ms-blob-sequence-number
(ページ BLOB の場合のみ)x-ms-committed-block-count
(追加 BLOB のみ、バージョン 2015-02-21 の場合のみ)
BLOB がブロック BLOB の場合、ソース BLOB のコミット済みブロックリストもコピー先 BLOB にコピーされます。 コミット前のブロックはコピーされません。
宛先 BLOB は、常にソース BLOB と同じサイズです。 ターゲット BLOB のヘッダーの Content-Length
値は、ソース BLOB のそのヘッダーの値と一致します。
コピー元 BLOB とコピー先 BLOB が同じである場合、Copy Blob
を実行すると、コミット前のブロックが削除されます。 この場合、メタデータが指定されていると、既存のメタデータは新しいメタデータで上書きされます。
ヘッダーが x-ms-tags
宛先 BLOB のタグを提供する場合は、クエリ文字列でエンコードする必要があります。 タグ キーと値は、「 BLOB タグの設定」で指定されている名前付けと長さの要件に準拠している必要があります。
ヘッダーには x-ms-tags
、最大 2 キロビットのタグを含めることができます。 さらにタグが必要な場合は、 操作を使用します Set Blob Tags
。
ヘッダーに x-ms-tags
タグが指定されていない場合、タグはソース BLOB からコピーされません。
操作は Copy Blob
ソース BLOB からのみ読み取られます。そのため、ソース BLOB のリース状態は関係ありません。 ただし、この操作では Copy Blob
、コピー操作の開始時にソース BLOB の値が保存されます ETag
。 コピー操作が ETag
完了する前に値が変更されると、操作は失敗します。 コピー元 BLOB が変更されないようにするには、コピー操作中にその BLOB をリースします。
コピー先 BLOB にアクティブな無限リースがある場合は、Copy Blob
操作への呼び出しで、そのリース ID を指定する必要があります。 指定したリースがアクティブな有限期間リースである場合、この呼び出しは状態コード 412 (前提条件に失敗) で失敗します。 コピー操作が保留中の間、移行先 BLOB のリース操作は状態コード 409 (競合) で失敗します。 コピー操作中に、ソースとは異なる名前のコピー先 BLOB にコピーする場合、ソースと同じ名前のコピー先 BLOB にコピーする場合、またはベース BLOB 経由でスナップショットを昇格する場合でも、コピー先 BLOB の無限リースはこのようにロックされます。
クライアントでまだ存在しない BLOB のリース ID が指定されている場合、Blob Storage はバージョン 2013-08-15 以降に対して行われた要求の状態コード 412 (前提条件に失敗) を返します。 以前のバージョンの場合、Blob Storage は状態コード 201 (作成済み) を返します。
ソース BLOB がコピーされると、ソース BLOB のスナップショットまたはバージョンはコピー先にコピーされません。 コピー先 BLOB がコピーで上書きされると、コピー先 BLOB に関連付けられているスナップショットまたはバージョンは、その名前の下にそのまま残ります。
オンライン層 (ホットまたはクール) にある限り、コピー操作を実行して、スナップショットをベース BLOB 上に昇格させることができます。 これにより、以前のバージョンの BLOB を復元できます。 スナップショットは元のままで、スナップショットのコピー先が、読み取りおよび書き込みできるコピーで上書きされます。
オンライン層 (ホットまたはクール) にある限り、コピー操作を実行して、ベース BLOB を介してバージョンを昇格させることができます。 これにより、以前のバージョンの BLOB を復元できます。 バージョンは残りますが、コピー先は読み取りと書き込みの両方が可能なコピーで上書きされます。
バージョン 2018-11-09 以降では、アーカイブされた BLOB を同じストレージ アカウント内の新しい BLOB にコピーできます。 ソース BLOB はアーカイブ層に残ります。 ソース BLOB がアーカイブされた BLOB の場合、要求には、ターゲット BLOB の層を x-ms-access-tier
示す ヘッダーが含まれている必要があります。 宛先 BLOB はオンライン層に存在する必要があります。 アーカイブ層の BLOB にコピーすることはできません。
バージョン 2021-02-12 以降では、コピー先アカウントがソース アカウントと同じリージョンにある限り、アーカイブされた BLOB を別のストレージ アカウントのオンライン層にコピーできます。
ソース BLOB がリハイドレートされている場合、要求は失敗する可能性があります。
ブロック BLOB レベルでの階層化の詳細については、「 ホット、クール、アーカイブのストレージ層」を参照してください。
操作が Copy Blob
非同期的に完了する場合は、次の表を使用して、返された状態コードに基づいて次の手順を決定します。
status code | 意味 |
---|---|
202 (Accepted), x-ms-copy-status: success | コピー操作が正常に完了しました。 |
202 (Accepted), x-ms-copy-status: pending | コピー操作が完了していません。 を使用 Get Blob Properties してターゲット BLOB をポーリングし、操作が x-ms-copy-status 完了または失敗するまでヘッダーを調べます。 |
4xx、500、または 503 | コピー操作に失敗しました。 |
Copy Blob
操作の実行中および実行後、コピー先 BLOB のプロパティには、Copy Blob
操作のコピー ID とコピー元 BLOB の URL が含まれます。 操作が完了すると、Blob Storage は時刻と結果の値 (success
、、 failed
または aborted
) を転送先 BLOB のプロパティに書き込みます。 操作に結果がある failed
場合、 x-ms-copy-status-description
ヘッダーにはエラー詳細文字列が含まれます。
保留中 Copy Blob
の操作には、2 週間のタイムアウトがあります。 2 週間経過してもコピー試行が完了せず、フィールドが にfailed
x-ms-copy-status-description
設定され、 が 500 (OperationCancelled) に設定された空の BLOB x-ms-copy-status
が残ります。 コピー操作中に発生する可能性のある致命的でない断続的なエラーは、操作の進行状況を妨げる可能性がありますが、失敗の原因にならない可能性があります。 このような場合は、x-ms-copy-status-description
によって断続的なエラーが記述されます。
コピー操作中にコピー先 BLOB を変更またはスナップショットしようとすると、状態コード 409 (競合)、"Blob のコピーが進行中" で失敗します。
操作を Abort Copy Blob
呼び出すと、ヘッダーが x-ms-copy-status:aborted
表示されます。 コピー先 BLOB には、そのままのメタデータと BLOB の長さが 0 バイトになります。 への元の呼び出し Copy Blob
を繰り返して、コピー操作をもう一度試すことができます。
操作が Copy Blob
同期的に完了した場合は、次の表を使用して、コピー操作の状態を確認します。
status code | 意味 |
---|---|
202 (Accepted), x-ms-copy-status: success | コピー操作が正常に完了しました。 |
4xx、500、または 503 | コピー操作に失敗しました。 |
レベルは Premium Storage レベルに継承されます。 ブロック BLOB の場合、転送先 BLOB を上書きすると、指定されていない場合 x-ms-access-tier
、ターゲットからホット層またはクール層が継承されます。 アーカイブされた BLOB の上書きは失敗します。 ブロック BLOB レベルでの階層化の詳細については、「 ホット、クール、アーカイブのストレージ層」を参照してください。
価格要求は、Blob Storage REST API を介して直接、または Azure Storage クライアント ライブラリを介して Blob Storage API を使用するクライアントから送信できます。 これらの要求では、トランザクションあたりの料金が発生します。 トランザクションの種類は、アカウントの課金方法に影響します。 たとえば、読み取りトランザクションは、書き込みトランザクションとは異なる課金カテゴリに計上されます。 次の表は、ストレージ アカウントの種類に基づく要求の課金カテゴリ Copy Blob
を示しています。
操作 | ストレージ アカウントの種類 | 課金カテゴリ |
---|---|---|
BLOB のコピー (宛先アカウント1) | Premium ブロック BLOB Standard 汎用 v2 Standard 汎用 v1 |
書き込み操作 |
BLOB のコピー (ソース アカウント2) | Premium ブロック BLOB Standard 汎用 v2 Standard 汎用 v1 |
操作を読み取ります。 |
1宛先アカウントは、書き込みを開始するために 1 つのトランザクションに対して課金されます。
2ソース オブジェクトが別のアカウントにある場合、ソース アカウントでは、ソース オブジェクトに対する読み取り要求ごとに 1 つのトランザクションが発生します。
指定した課金カテゴリの価格については、「Azure Blob Storage価格」を参照してください。
コピー先アカウントでは、コピー操作を取り消す (「Blob のコピーの中止」を参照) またはコピー操作の状態をチェックする要求ごとにトランザクション コストも発生します (「BLOB の取得」または「BLOB のプロパティの取得」を参照)。
さらに、送信元アカウントと移行先アカウントが異なるリージョン (米国北部や米国南部など) に存在する場合、要求の転送に使用する帯域幅は、エグレスとしてソース ストレージ アカウントに課金されます。 同じ地域内のアカウント間の送信は無料です。
同じアカウント内の別の名前を持つコピー先 BLOB にソース BLOB をコピーする場合は、新しい BLOB に追加のストレージ リソースを使用します。 その後、コピー操作によって、ストレージ アカウントの追加リソースの容量使用量に対する料金が発生します。 ただし、ソース BLOB とコピー先 BLOB の名前が同じアカウント内で同じである場合 (たとえば、スナップショットをベース BLOB に昇格させる場合)、バージョン 2012-02-12 以降に格納されている追加のコピー メタデータ以外に追加料金は発生しません。
スナップショットを昇格してベース BLOB を置き換えると、スナップショットとベース BLOB は同一になります。 両者間でブロックまたはページが共有されるため、コピー操作によってストレージ アカウントの容量使用に伴う追加料金は発生しません。 ただし、別の名前の宛先 BLOB にスナップショットをコピーした場合、その操作では、結果として得られる新しい BLOB で使用されるストレージ リソースに対して追加料金が発生します。 異なる名前を持つ 2 つの BLOB は、同一であってもブロックまたはページを共有できません。 スナップショットコスト シナリオの詳細については、「スナップショットで料金が発生する方法について」を参照してください。
Azure Storage への要求を承認する
状態コードとエラー コード
Blob Storage のエラー コード
スナップショットで料金が発生する方法を理解する
BLOB のコピーを中止する