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 の共有アクセス署名 (SAS) を指定できます。 バージョン 2015-04-05 以降では、宛先 BLOB が別のストレージ アカウントにある場合は、その宛先 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-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 がコピーされます。 値が一致しない場合、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 またはファイルの名前を指定します。 バージョン 2012-02-12 以降、この値は、BLOB を指定する最大 2 キビバイト (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 のアクティブなリース ID と一致する場合にのみ Copy Blob 操作が実行されます。このヘッダーが指定されていて、ソース BLOB に現在アクティブなリースがない場合、操作は状態コード 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 アカウントでサポートされています。 有効な値は、 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 (作成済み) が返されます。
状態コードの詳細については、「状態コードとエラー コードを参照してください。
応答ヘッダー
この操作の応答には、次のヘッダーが含まれます。 応答には、追加の標準 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 または Get Blob Properties と共に使用してこのコピー操作の状態を確認するか、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) の承認 | 共有キー認証(または共有キーLite) |
---|---|---|---|
宛先 BLOB | イエス | イエス | イエス |
同じストレージ アカウント内のソース BLOB | イエス | イエス | イエス |
別のストレージ アカウント内のソース BLOB | いいえ | イエス | いいえ |
要求で x-ms-tags
要求ヘッダーにタグが指定されている場合、呼び出し元は操作の承認要件を Set Blob Tags 満たす必要があります。
次の説明に従って、Copy Blob
操作を承認できます。 異なるストレージ アカウント内のソース 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
操作を呼び出すために必要な RBAC アクションと、このアクションを含む最小特権の組み込み Azure RBAC ロールを次に示します。
宛先 BLOB
- Azure RBAC アクション:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write (既存の BLOB への書き込み用) または Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action (新しい BLOB の宛先への書き込み用)
- 最小特権組み込みロール: ストレージ 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 にはすべて 0 が含まれています。 次に、ソース ページの範囲が列挙され、空でない範囲がコピーされます。
ブロック BLOB または追加 BLOB の場合、Blob Storage は、この操作から戻る前に、長さが 0 のコミット済み BLOB を作成します。
ブロック BLOB からコピーする場合は、コミットされたすべてのブロックとそのブロック ID がコピーされます。 コミットされていないブロックはコピーされません。 コピー操作の終了時に、コピー先 BLOB のコミット済みブロック数はソースと同じです。
追加 BLOB からコピーすると、コミットされたすべてのブロックがコピーされます。 コピー操作の終了時に、コピー先 BLOB のコミット済みブロックの数は、ソース BLOB と同じ数になります。
すべての BLOB の種類で、コピー先 BLOB で Get Blob
または Get Blob Properties
を呼び出して、コピー操作の状態を確認できます。 コピー操作が完了すると、最終的な BLOB がコミットされます。
コピー操作のソースが ETag
値を提供している場合、コピー操作の進行中にソースを変更すると、その操作は失敗します。 コピーの進行中にコピー先 BLOB を変更しようとすると、状態コード 409 (競合) で失敗します。 宛先 BLOB に無限のリースがある場合は、リース ID を Copy Blob
に渡す必要があります。 有限期間のリースは許可されません。
ブロック BLOB の ETag
値は、 Copy Blob
操作の開始時と操作の終了時で変更されます。 ページ BLOB の ETag
値は、 Copy Blob
操作の開始時に変更され、コピー操作中も頻繁に変更され続けます。 ブロック BLOB の内容は、フル コピー操作が完了した後にのみ、 Get
コマンドを通じて表示されます。
BLOB のプロパティ、タグ、メタデータのコピー
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 からコピーされません。
リースされた BLOB のコピー
Copy Blob
操作はソース BLOB からのみ読み取るため、ソース BLOB のリース状態は関係ありません。 ただし、 Copy Blob
操作では、コピー操作の開始時にソース BLOB の ETag
値が保存されます。 コピー操作が完了する前に ETag
値が変更されると、操作は失敗します。 コピー操作中にソース BLOB をリースすることで、ソース BLOB の変更を防ぐことができます。
コピー先 BLOB にアクティブな無限リースがある場合は、 Copy Blob
操作の呼び出しでそのリース ID を指定する必要があります。 指定したリースがアクティブな有限期間リースの場合、この呼び出しは状態コード 412 (Precondition Failed) で失敗します。 コピー操作が保留中の間、コピー先 BLOB に対するリース操作は状態コード 409 (競合) で失敗します。 コピー元 BLOB とは異なる名前の宛先 BLOB にコピーするか、ソースと同じ名前の宛先 BLOB にコピーするか、ベース BLOB にスナップショットを昇格させるかに関係なく、コピー操作中にコピー先 BLOB の無限リースは、この方法でロックされます。
クライアントがまだ存在しない BLOB にリース ID を指定した場合、Blob Storage はバージョン 2013-08-15 以降に対して行われた要求に対してステータス コード 412 (前提条件に失敗しました) を返します。 以前のバージョンでは、Blob Storage はステータス コード 201 (作成済み) を返します。
BLOB スナップショットのコピー
ソース BLOB がコピーされても、ソース BLOB のスナップショットまたはバージョンはコピー先にコピーされません。 コピー先 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 レベルでの階層化の詳細については 、「ホット、クール、アーカイブ ストレージ層」を参照してください。
保留中のコピー操作の操作 (バージョン 2012-02-12 以降)
Copy Blob
操作が非同期的に終了した場合は、次の表を使用して、返されたステータス コードに基づいて次の手順を決定します。
状態コード | 意味 |
---|---|
202 (承認済み)、x-ms-copy-status: success | コピー操作が正常に完了しました。 |
202 (承認済み)、x-ms-copy-status: 保留中 | コピー操作が完了していません。
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 週間後に完了していないコピーの試行がタイムアウトし、 x-ms-copy-status
フィールドが failed
に設定され、 x-ms-copy-status-description
が 500 (OperationCancelled) に設定された空の BLOB が残ります。 コピー操作中に発生する可能性がある断続的で致命的でないエラーは、操作の進行状況を妨げる可能性がありますが、失敗の原因にならない可能性があります。 このような場合、x-ms-copy-status-description
は断続的なエラーについて説明します。
コピー操作中にコピー先 BLOB を変更またはスナップショットを作成しようとすると、状態コード 409 (競合) "BLOB のコピーが進行中" で失敗します。
Abort Copy Blob
操作を呼び出すと、x-ms-copy-status:aborted
ヘッダーが表示されます。 コピー先 BLOB には、そのままのメタデータと BLOB の長さ 0 バイトが含まれます。
Copy Blob
への最初の呼び出しを繰り返して、コピー操作を再試行できます。
Copy Blob
操作が同期的に終了する場合は、次の表を使用してコピー操作の状態を判断します。
状態コード | 意味 |
---|---|
202 (承認済み)、x-ms-copy-status: success | コピー操作が正常に完了しました。 |
4xx、500、または 503 | コピー操作に失敗しました。 |
このレベルは、Premium Storage レベルに継承されます。 ブロック BLOB の場合、宛先 BLOB を上書きすると、ホット層またはクール層が提供されていない場合、変換先からホット層またはクール層 x-ms-access-tier
継承されます。 アーカイブされた BLOB の上書きは失敗します。 ブロック BLOB レベルでの階層化の詳細については 、「ホット、クール、アーカイブ ストレージ層」を参照してください。
請求書
価格要求は、Blob Storage API を使用するクライアントから、Blob Storage REST API を介して直接、または Azure Storage クライアント ライブラリから送信できます。 これらの要求には、トランザクションあたりの料金が発生します。 トランザクションの種類は、アカウントの課金方法に影響します。 たとえば、読み取りトランザクションは、書き込みトランザクションとは異なる課金カテゴリに発生します。 次の表に、ストレージ アカウントの種類に基づく 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 のコピーを中止する