BLOB のコピー

Copy Blob 操作は、BLOB をストレージ アカウント内にコピーします。

バージョン 2012-02-12 以降では、操作の Copy Blob ソースは、任意の Azure ストレージ アカウントでコミットされた BLOB にすることができます。

バージョン 2015-02-21 以降では、操作の Copy Blob ソースは任意の Azure ストレージ アカウント内の Azure ファイルにすることができます。

注意

操作を別のストレージ アカウントからコピーできるのは Copy Blob 、2012 年 6 月 7 日以降に作成されたストレージ アカウントだけです。

Request

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

バージョン 2013-08-15 以降では、移行先 BLOB がソース BLOB と同じアカウントにある場合は、共有アクセス署名 (SAS) を指定できます。 バージョン 2015-04-05 以降では、ターゲット 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既存のコピー先 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 以降では、Azure Active Directory (Azure AD) を使用して、ソース BLOB の読み取り操作を承認することもできます。 ただし、ソースが別のストレージ アカウント内の BLOB である場合は、ソース BLOB がパブリックであるか、共有アクセス署名を介してアクセスが承認されている必要があります。 ソース BLOB がパブリックの場合、コピー操作を実行するための承認は必要ありません。

バージョン 2015-02-21 以降では、ソース オブジェクトはAzure Files内のファイルにすることができます。 ソース オブジェクトが BLOB にコピーされるファイルの場合、ソース ファイルは、同じアカウントに存在するか別のアカウントに存在するかに関係なく、共有アクセス署名を介して承認する必要があります。

操作を別のストレージ アカウントからコピーできるのは Copy Blob 、2012 年 6 月 7 日以降に作成されたストレージ アカウントだけです。

ソース オブジェクト 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 省略可能。 ログ記録の構成時に Azure Monitor ログに記録される 1 KiB 文字の制限を持つ、クライアント生成の不透明な値を提供します。 このヘッダーを使用して、クライアント側のアクティビティをサーバーが受け取る要求と関連付けるよう強くお勧めします。 詳細については、「 Azure ログ: ログを使用してストレージ要求を追跡する」を参照してください。
x-ms-access-tier 省略可能。 ターゲット BLOB に設定する層を指定します。 このヘッダーは、バージョン 2017-04-17 以降の Premium アカウントのページ BLOB 用です。 サポートされているレベルの完全な一覧については、 VM の高パフォーマンスの Premium Storage とマネージド ディスクに関する説明を参照してください。 このヘッダーは、ブロック BLOB のバージョン 2018-11-09 以降でサポートされています。 ブロック BLOB の階層化は、Blob Storage または v2 アカウントGeneral Purposeでサポートされています。 有効な値は HotCoolArchive です。 ブロック 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このコピー操作の状態を確認する場合やGet Blob Properties、保留中のコピー操作をAbort Copy Blob取り消すために渡す場合に使用します。
x-ms-copy-status: <success &#124; 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>  
  

承認

アカウント所有者は、この操作を呼び出すことができます。 バージョン 2013-08-15 以降に対する要求の場合、同じアカウント内でのコピー操作では、コピー先 BLOB またはコンテナーへの書き込みアクセス許可がある共有アクセス署名がサポートされます。 要求に対して指定した共有アクセス署名はコピー先 BLOB にのみ適用されることに注意してください。

ソース BLOB またはファイルへのアクセスは、要求ヘッダーの詳細で説明されているように、個別に承認されます x-ms-copy-source

次の表では、操作のコピー先オブジェクトとソース オブジェクトを Copy Blob 承認する方法について説明します。

BLOB 共有キーまたは共有キー ライトを使用した承認 共有アクセス署名による承認 承認を必要としないパブリック オブジェクト
コピー先 BLOB はい はい いいえ
同じアカウント内のソース BLOB はい はい はい
別のアカウントのソース BLOB いいえ はい はい
同じアカウントまたは別のアカウントのソース ファイル いいえ はい 適用なし

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

解説

バージョン 2012-02-12 以降では、操作は Copy Blob 非同期的に完了できます。 この操作は、コピー操作の確認または取り消しに使用できるコピー ID を返します。 Blob Storage では、ベスト エフォートベースで 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 (競合) で失敗します。

操作を別のストレージ アカウントからコピーできるのは Copy Blob 、2012 年 6 月 7 日以降に作成されたストレージ アカウントだけです。 2012 年 6 月 7 日より前に作成されたアカウントに別のストレージ アカウントからコピーしようとすると、状態コード 400 (Bad Request) で失敗します。

この操作では 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 すか、コピー 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 開始時に ETag 、この操作によってソース BLOB の値が保存されます。 コピー操作が 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 バージョンのコピー

オンライン層 (ホットまたはクール) にある限り、コピー操作を実行して、ベース BLOB 経由でバージョンを昇格させることができます。 このようにして、以前のバージョンの BLOB を復元できます。 バージョンは残りますが、コピー先は読み取りと書き込みの両方が可能なコピーで上書きされます。

アーカイブされた BLOB のコピー

バージョン 2018-11-09 以降では、アーカイブされた BLOB を同じストレージ アカウント内の新しい BLOB にコピーできます。 ソース BLOB はアーカイブ層に残ります。 ソース BLOB がアーカイブされた BLOB の場合、要求にはヘッダーが x-ms-access-tier 含まれている必要があります。これは、コピー先 BLOB の層を示します。 コピー先の BLOB はオンライン層に存在する必要があります。 アーカイブ層の BLOB にコピーすることはできません。

バージョン 2021-02-12 以降では、コピー先アカウントがソース アカウントと同じリージョンにある限り、アーカイブされた BLOB を別のストレージ アカウントのオンライン層にコピーできます。

ソース BLOB がリハイドレートされている場合、要求は失敗する可能性があります。

ブロック BLOB レベルでの階層化の詳細については、「 ホット、クール、アーカイブ ストレージ層」を参照してください。

保留中のコピー操作の操作 (バージョン 2012-02-12 以降)

操作が Copy Blob 非同期的に完了した場合は、次の表を使用して、返された状態コードに基づいて次の手順を決定します。

状態コード 意味
202 (Accepted), x-ms-copy-status: success コピー操作は正常に完了しました。
202 (Accepted), x-ms-copy-status: pending コピー操作が完了していません。 操作が完了するか失敗するまでヘッダーをx-ms-copy-status調べるために使用してGet Blob Properties、転送先 BLOB をポーリングします。
4xx、500、または 503 コピー操作に失敗しました。

Copy Blob 操作の実行中および実行後、コピー先 BLOB のプロパティには、Copy Blob 操作のコピー ID とコピー元 BLOB の URL が含まれます。 操作が完了すると、Blob Storage は時刻と結果の値 (successfailedまたはaborted) をコピー先 BLOB のプロパティに書き込みます。 操作に結果がある failed 場合、 x-ms-copy-status-description ヘッダーにはエラーの詳細文字列が含まれます。

保留中 Copy Blob の操作には 2 週間のタイムアウトがあります。 2 週間後に完了せず、フィールドが 500 (OperationCancelled) にfailedx-ms-copy-status-description設定された空の BLOB をx-ms-copy-status残したコピー試行。 コピー操作中に発生する可能性がある断続的で致命的でないエラーは、操作の進行状況を妨げる可能性がありますが、失敗することはありません。 このような場合は、x-ms-copy-status-description によって断続的なエラーが記述されます。

コピー操作中にコピー先 BLOB を変更またはスナップショットを作成しようとすると、状態コード 409 (競合) "Copy BLOB in Progress" で失敗します。

操作を Abort Copy Blob 呼び出すと、ヘッダーが x-ms-copy-status:aborted 表示されます。 コピー先の BLOB には、メタデータと BLOB の長さが 0 バイトになります。 元の呼び出しを繰り返して Copy Blob 、コピー操作をもう一度試すことができます。

操作が Copy Blob 同期的に完了した場合は、次の表を使用してコピー操作の状態を確認します。

状態コード 意味
202 (Accepted), x-ms-copy-status: success コピー操作は正常に完了しました。
4xx、500、または 503 コピー操作に失敗しました。

レベルは、Premium Storage レベルに対して継承されます。 ブロック BLOB の場合、ターゲット BLOB を上書きすると、指定されていない場合 x-ms-access-tier は、ターゲットからホット層またはクール層が継承されます。 アーカイブされた BLOB の上書きは失敗します。 ブロック BLOB レベルでの階層化の詳細については、「 ホット、クール、アーカイブ ストレージ層」を参照してください。

課金

操作の Copy Blob コピー先アカウントは、1 つのトランザクションがコピーを開始するために課金されます。 コピー先アカウントでは、コピー操作の状態を取り消すか要求する要求ごとに 1 つのトランザクションも発生します。

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

同じアカウント内の別の名前を持つコピー先 BLOB にソース BLOB をコピーする場合は、新しい BLOB に追加のストレージ リソースを使用します。 その後、コピー操作によって、それらの追加リソースに対するストレージ アカウントの容量使用量に対する料金が発生します。 ただし、ソース BLOB とコピー先 BLOB の名前が同じアカウント内で同じである場合 (たとえば、スナップショットをベース BLOB に昇格する場合)、バージョン 2012-02-12 以降に格納されている追加のコピー メタデータ以外に追加料金は発生しません。

スナップショットを昇格してベース BLOB を置き換えると、スナップショットとベース BLOB は同一になります。 両者間でブロックまたはページが共有されるため、コピー操作によってストレージ アカウントの容量使用に伴う追加料金は発生しません。 ただし、スナップショットを別の名前のコピー先 BLOB にコピーした場合、その操作では、結果として得られる新しい BLOB で使用されるストレージ リソースに対して追加料金が発生します。 異なる名前の 2 つの BLOB は、ブロックまたはページが同一であっても共有できません。 スナップショット コストのシナリオの詳細については、「スナップショットが 課金される方法について」を参照してください。

関連項目

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