Snapshot Blob

Snapshot Blob 操作は、BLOB の読み取り専用スナップショットを作成します。

Request

Snapshot Blob 要求の構成は次のとおりです。 HTTPS が推奨されます。 myaccount をストレージ アカウントの名前に置き換えます。

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

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

エミューレートされたストレージ サービスに対する要求では、エミュレーターのホスト名と BLOB サービス ポートを 127.0.0.1:10000 と指定し、その後にエミューレートされたアカウント名を指定します。

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

詳細については、「開発とテストにAzure Storage Emulatorを使用する」を参照してください。

URI パラメーター

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

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

要求ヘッダー

必須要求ヘッダーと省略可能な要求ヘッダーを次の表に示します。

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

バージョン 2009-09-19 以降では、メタデータ名は C# 識別子の名前付け規則に従う必要があることに注意してください。 詳細については、「 コンテナー、BLOB、およびメタデータの名前付けと参照 」を参照してください。
If-Modified-Since 省略可能。 DateTime 値。 この条件ヘッダーを指定すると、BLOB が指定した日付/時刻以降に変更された場合にのみ BLOB のスナップショットが取得されます。 ベース BLOB が変更されなかった場合、BLOB サービスはステータス コード 412 (Precondition Failed) を返します。
If-Unmodified-Since 省略可能。 DateTime 値。 この条件ヘッダーを指定すると、BLOB が指定した日付/時刻以降に変更されなかった場合にのみ BLOB のスナップショットが取得されます。 ベース BLOB が変更された場合、BLOB Service はステータス コード 412 (Precondition Failed) を返します。
If-Match 省略可能。 ETag 値。 この条件ヘッダーの ETag 値を指定すると、ETag 値が指定した値に一致する場合にのみ BLOB のスナップショットが取得されます。 値が一致しない場合、BLOB サービスはステータス コード 412 (Precondition Failed) を返します。
If-None-Match 省略可能。 ETag 値。

この条件ヘッダーの ETag 値を指定すると、ETag 値が指定した値に一致しない場合にのみ BLOB のスナップショットが取得されます。 値が一致する場合、BLOB Service はステータス コード 412 (Precondition Failed) を返します。
x-ms-encryption-scope 省略可能。 要求の内容の暗号化に使用する暗号化スコープを示します。 このヘッダーは、バージョン 2019-02-02 以降でサポートされています。
x-ms-lease-id:<ID> 省略可能。 このヘッダーを指定すると、次の 2 つの条件を満たした場合にのみ操作が実行されます。

- BLOB のリースは現在アクティブです。
- 要求で指定されたリース ID は、BLOB のリース ID と一致します。

このヘッダーを指定すると、2 つの条件を満たしていない場合は要求が失敗し、Snapshot Blob 操作はステータス コード 412 (Precondition Failed) で失敗します。
x-ms-client-request-id 省略可能。 ストレージ分析ログが有効になっているときに分析ログに記録される 1 KiB 文字の制限を持つクライアント生成の不透明な値を提供します。 クライアント側のアクティビティをサーバーが受信した要求と関連付けるには、このヘッダーを使用することが強く推奨されます。 詳細については、「Storage Analyticsログ記録と Azure ログ記録: ログを使用したStorage要求の追跡」を参照してください。

この操作では、条件ヘッダーを使用して、指定した条件を満たした場合にのみ操作を実行することもできます。 詳細については、「BLOB サービス操作の条件ヘッダーの指定」を参照してください。

要求ヘッダー (顧客が指定した暗号化キー)

バージョン 2019-02-02 以降では、お客様が指定したキーを使用して BLOB を暗号化する要求で、次のヘッダーを指定できます。 顧客が指定したキー (および対応するヘッダーのセット) を使用した暗号化は省略可能です。 BLOB が以前に顧客指定のキーで暗号化されている場合、読み取り操作を正常に完了するには、要求にこれらのヘッダーを含める必要があります。

要求ヘッダー 説明
x-ms-encryption-key 必須。 Base64 でエンコードされた AES-256 暗号化キー。
x-ms-encryption-key-sha256 必須。 暗号化キーの Base64 でエンコードされた SHA256 ハッシュ。
x-ms-encryption-algorithm: AES256 必須。 暗号化に使用するアルゴリズムを指定します。 このヘッダーの値は AES256 である必要があります。

要求本文

[なし] :

応答

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

状態コード

操作が正常に終了すると、状態コード 201 (Created) が返されます。

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

レスポンス ヘッダー

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

構文 説明
x-ms-snapshot: <DateTime> このヘッダーはスナップショットを一意に識別する DateTime 値を返します。 このヘッダーの値はスナップショットのバージョンを示し、以降の要求でスナップショットへのアクセスに使用できます。 この値は非透過的です。
ETag スナップショットの ETag。 要求バージョンが 2011-08-18 またはそれ以降である場合、ETag 値は引用符で囲まれます。 スナップショットに書き込むことはできないため、スナップショットの ETag は不変です。 ただし、新しいメタデータを Snaphot Blob 要求で指定した場合、スナップショットの ETag はベース BLOB の ETag とは異なります。 要求でメタデータを指定しなかった場合、スナップショットの ETag はスナップショット取得時のベース BLOB の ETag と同一になります。
Last-Modified スナップショットの最終更新時刻。 日付形式は RFC 1123 に従います。 詳細については、「 ヘッダーのDate-Time値の表現」を参照してください。

スナップショットに書き込むことはできないため、スナップショットの最終更新時刻は不変です。 ただし、新しいメタデータを Snaphot Blob 要求で指定した場合、スナップショットの最終更新時刻はベース BLOB の最終更新時刻とは異なります。 要求でメタデータを指定しなかった場合、スナップショットの最終更新時刻はスナップショット取得時のベース BLOB の最終更新時刻と同一になります。
x-ms-request-id このヘッダーは要求を一意に識別するので、要求のトラブルシューティングに使用できます。 詳細については、「 API 操作のトラブルシューティング」を参照してください
x-ms-version 要求の実行に使用する BLOB サービスのバージョンを示します。 このヘッダーはバージョン 2009-09-19 以降で行った要求に対して返されます。
Date サービスによって生成される、応答の開始時刻を示す UTC 日付/時刻値。
x-ms-request-server-encrypted: true/false バージョン 2019-02-02 以降。 このヘッダーの値は、指定したアルゴリズムを true 使用して要求の内容が正常に暗号化された場合に設定されます false 。それ以外の場合は、このヘッダーの値が設定されます。
x-ms-encryption-key-sha256 バージョン 2019-02-02 以降。 このヘッダーは、要求で顧客が指定したキーを暗号化に使用した場合に返されるため、クライアントは、指定されたキーを使用して要求の内容が正常に暗号化されていることを確認できます。
x-ms-encryption-scope バージョン 2019-02-02 以降。 このヘッダーは、要求が暗号化スコープを使用した場合に返されるため、クライアントは、暗号化スコープを使用して要求の内容が正常に暗号化されていることを確認できます。
x-ms-version-id: <DateTime> バージョン 2019-12-12 以降。 このヘッダーは、BLOB を一意に識別する不透明な DateTime 値を返します。 このヘッダーの値は BLOB のバージョンを示し、BLOB にアクセスするために後続の要求で使用できます。
x-ms-client-request-id このヘッダーは、要求と対応する応答のトラブルシューティングに使用できます。 このヘッダーの値は、要求に存在し、その値 x-ms-client-request-id が最大 1024 文字の ASCII 文字で表示される場合、ヘッダーの値と同じです。 ヘッダーが x-ms-client-request-id 要求に存在しない場合、このヘッダーは応答に存在しません。

応答本文

[なし] :

承認

この操作を呼び出すことができるのはアカウント所有者のみです。

解説

スナップショットは読み取り専用の BLOB です。 作成されたスナップショットは、読み取り、コピー、削除はできますが、変更はできません。

スナップショットは BLOB データをバックアップするのに便利な方法です。 スナップショットを使用して BLOB を以前のバージョンに復元するには、 Blob のコピー を呼び出して、ベース BLOB をそのスナップショットで上書きします。

スナップショットを作成すると、BLOB サービスはベース BLOB を基準にしてスナップショットを一意に識別する DateTime 値を返します。 この値を使用して、スナップショットを詳細に操作できます。 DateTime 値は非透過的に扱う必要があります。

DateTime 値は URI のスナップショットを識別します。 たとえば、ベース BLOB とそのスナップショットの URI は次のようになります。

  • ベース BLOB:http://myaccount.blob.core.windows.net/mycontainer/myblob

  • スナップショット:http://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>

Snapshot Blob 操作を呼び出すたびに、新しいスナップショットが一意の DateTime 値で作成されます。 BLOB がサポートするスナップショットの数に制限はありません。 既存のスナップショットは上書きされませんが、 Blob の削除 を呼び出し、ヘッダーを x-ms-include-snapshots 適切な値に設定することで明示的に削除する必要があります。

スナップショットの読み取り、コピー、削除

Snapshot Blob の呼び出しが成功すると、x-ms-snapshot 応答ヘッダーに DateTime 値が返されます。 この DateTime 値を使用して、特定バージョンのスナップショットの読み取り、削除、またはコピー操作を行うことができます。 スナップショットに対して有効な BLOB Service の操作を呼び出すには、BLOB 名の後に ?snapshot=<DateTime> を指定します。

BLOB のプロパティおよびメタデータのコピー

BLOB のスナップショットを作成すると、次のシステム プロパティが同じ値でスナップショットにコピーされます。

  • Content-Type

  • Content-Encoding

  • Content-Language

  • Content-Length

  • Cache-Control

  • Content-MD5

  • x-ms-blob-sequence-number (for page blobs only)

  • x-ms-blob-committed-block-count (for append blobs only)

  • x-ms-copy-id (バージョン 2012-02-12 以降)

  • x-ms-copy-status (バージョン 2012-02-12 以降)

  • x-ms-copy-source (バージョン 2012-02-12 以降)

  • x-ms-copy-progress (バージョン 2012-02-12 以降)

  • x-ms-copy-completion-time (バージョン 2012-02-12 以降)

  • x-ms-copy-status-description (バージョン 2012-02-12 以降)

ブロック BLOB の場合、ベース BLOB のコミットされたブロック リストもスナップショットにコピーされます。 コミット前のブロックはコピーされません。

スナップショット BLOB のサイズは常にスナップショット取得時のベース BLOB と同じであるため、スナップショット BLOB の Content-Length ヘッダーの値はベース BLOB と同じになります。

スナップショットに 1 つまたは複数の新しいメタデータ値を指定するには、要求の x-ms-meta-name:value ヘッダーを指定します。 このヘッダーを指定しない場合、ベース BLOB に関連付けられたメタデータがスナップショットにコピーされます。

ベース BLOB に関連付けられているタグはすべて、スナップショットにコピーされます。 スナップショットの新しいタグ値を設定することはできません。

条件ヘッダーの指定

要求に条件ヘッダーを指定すると、条件を満たした場合にのみ BLOB のスナップショットが取得されます。 指定した条件を満たしていない場合、スナップショットは作成されず、BLOB サービスはステータス コード 412 (Precondition Failed) と、満たしていない条件に関する追加のエラー情報を返します。

リースした BLOB のスナップショットの作成

ベース BLOB にアクティブなリースが存在する場合、要求が次のいずれかの条件を満たしていれば、BLOB のスナップショットを作成できます。

  • 要求に条件付きの x-ms-lease-id ヘッダーが指定され、ベース BLOB のアクティブ リース ID が含まれている。 この条件は、リースがアクティブで、指定したリース ID が BLOB に関連付けられたリース ID と一致している場合にのみスナップショットを作成することを指定します。

  • x-ms-lease-id ヘッダーが指定されていない。この場合、排他的な書き込みリースは無視されます。

ベース BLOB に関連付けられたリースはスナップショットにコピーされません。 スナップショットはリースできません。

スナップショットのコピー

BLOB のコピー操作を使用してベース BLOB をコピー する場合、ベース BLOB のスナップショットはコピー先 BLOB にコピーされません。 コピー先 BLOB をコピーで上書きした場合、コピー先 BLOB に関連付けられたスナップショットは名前が変わっても元のままです。

スナップショット BLOB をベース BLOB にコピーすることにより、BLOB を以前のバージョンに復元できます。 スナップショットは元のままで、ベース BLOB が読み取りおよび書き込みできるコピーで上書きされます。

Note

ブロックまたはページはスナップショットとベース BLOB の間で共有されるため、スナップショットを昇格してもストレージ リソースに追加料金は発生しません。
スナップショットでの BLOB 層の設定は、REST バージョン 2019-12-12 以降で許可されます。 階層がルート BLOB に設定されている場合、すべてのスナップショットはベース BLOB から層を継承します。 アーカイブされた BLOB でのスナップショットの作成は失敗します。 オブジェクトに階層を明示的に設定すると、オブジェクトの全サイズに対する課金が発生します。 階層が設定された BLOB のスナップショットを作成すると、ルート BLOB とスナップショットの完全なコピー課金が発生します。 ブロック BLOB レベルの階層化の詳細については、「 ホット、クール、アーカイブストレージ層」を参照してください。

Premium Storage アカウントのスナップショット

スナップショットの観点から、Azure Premium Storage アカウントと標準ストレージ アカウントにはいくつかの違いがあります。

  • Premium Storage アカウントのページ BLOB あたりのスナップショットの数は 100 に制限されます。 その制限を超えた場合、Snapshot Blob 操作はエラー コード 409 (SnapshotCountExceeded) を返します。

  • Premium Storage アカウントのページ BLOB のスナップショットは 10 分おきに 1 回取得できます。 そのレートを超えた場合、Snapshot Blob 操作はエラー コード 409 (SnaphotOperationRateExceeded) を返します。

  • GET BLOB を使用したPremium Storage アカウント内のページ BLOB のスナップショットの読み取りはサポートされていません。 Premium Storage アカウントでのスナップショットに対する Get Blob の呼び出しでは、エラー コード 400 (無効な操作) が返されます。 ただし、スナップショットに対する Get Blob PropertiesGet BLOB Metadata の呼び出しはサポートされています。

    スナップショットを読み取るために、 BLOB のコピー 操作を使用して、アカウント内の別のページ BLOB にスナップショットをコピーできます。 すでにスナップショットがある BLOB にはスナップショットをコピーできません。 コピー先 BLOB にスナップショットがあると、Copy Blob でエラー コード 409 (SnapshotsPresent) が返されます。

Azure Premium Storage リソースでの REST 操作の呼び出しの詳細については、「Azure Premium Storageでの BLOB サービス操作の使用」を参照してください。

バージョン管理が有効なスナップショット

バージョン管理が有効になっている場合、BLOB のスナップショットを作成すると、新しいバージョンも生成され、以前のバージョンのベース BLOB が保存されます。 このパラメーターは x-ms-version-id 、新しいバージョンの BLOB の不透明な DateTime 値を返します。

関連項目

BLOB のスナップショットの作成
Azure Storageへの要求を承認する
ステータス コードとエラー コード
BLOB サービスのエラー コード