Snapshot Blob
Snapshot Blob
操作は、BLOB の読み取り専用スナップショットを作成します。
要求
要求は Snapshot Blob
次のように構築できます。 HTTPS が推奨されます。
myaccount をストレージ アカウントの名前に置き換えます。
PUT メソッド要求 URI | HTTP バージョン |
---|---|
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=snapshot |
HTTP/1.1 |
エミュレートされたストレージ サービス URI
エミュレートされたストレージ サービスに対して要求を行う場合は、エミュレーターのホスト名とAzure Blob Storageポートを として127.0.0.1:10000
指定し、その後にエミュレートされたアカウント名を指定します。
PUT メソッド要求 URI | HTTP バージョン |
---|---|
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=snapshot |
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 メタデータがスナップショットにコピーされます。 1 つ以上の名前と値のペアを指定すると、指定したメタデータを使用してスナップショットが作成され、メタデータはベース BLOB からコピーされません。 バージョン 2009-09-19 以降では、メタデータ名は C# 識別子の名前付け規則に従う必要があることに注意してください。 詳細については、「 コンテナー、BLOB、およびメタデータの名前付けと参照 」を参照してください。 |
If-Modified-Since |
省略可能。
DateTime 値。 指定した日付/時刻以降に変更された場合にのみ、BLOB のスナップショットを取得するには、この条件付きヘッダーを指定します。 ベース BLOB が変更されていない場合、Blob Storage は状態コード 412 (前提条件に失敗) を返します。 |
If-Unmodified-Since |
省略可能。
DateTime 値。 指定した日付/時刻以降に変更されていない場合にのみ、BLOB のスナップショットを取得するには、この条件付きヘッダーを指定します。 ベース BLOB が変更された場合、Blob Storage は状態コード 412 (前提条件に失敗しました) を返します。 |
If-Match |
省略可能。
ETag 値。 この条件付きヘッダーの値をETag 指定して BLOB のスナップショットを取得します。その値がETag 指定された値と一致する場合に限ります。 値が一致しない場合、Blob Storage は状態コード 412 (前提条件に失敗しました) を返します。 |
If-None-Match |
省略可能。
ETag 値。この条件付きヘッダーの値を ETag 指定して BLOB のスナップショットを取得します。そのETag 値が指定された値と一致しない場合に限ります。 値が同じ場合、Blob Storage は状態コード 412 (前提条件失敗) を返します。 |
x-ms-encryption-scope |
省略可能。 要求の内容の暗号化に使用する暗号化スコープを示します。 このヘッダーは、バージョン 2019-02-02 以降でサポートされています。 |
x-ms-lease-id:<ID> |
省略可能。 このヘッダーを指定すると、次の両方の条件が満たされた場合にのみ操作が実行されます。 - BLOB のリースは現在アクティブです。 - 要求で指定されたリース ID は、BLOB のリース ID と一致します。 このヘッダーが指定されていて、これらの条件のいずれかが満たされていない場合、要求は失敗します。 Snapshot Blob 状態コード 412 (前提条件に失敗しました) で操作が失敗します。 |
x-ms-client-request-id |
省略可能。 ログ記録の構成時にログに記録される 1 kibibyte (KiB) 文字制限を使用して、クライアントによって生成された不透明な値を提供します。 このヘッダーを使用して、クライアント側のアクティビティとサーバーが受信する要求を関連付けるよう強くお勧めします。 詳細については、「Azure Blob Storageの監視」を参照してください。 |
この操作では、指定した条件が満たされた場合にのみ、条件付きヘッダーを使用して操作を実行することもできます。 詳細については、「 Blob Storage 操作の条件付きヘッダーの指定」を参照してください。
要求ヘッダー (顧客指定の暗号化キー)
バージョン 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 である必要があります。 |
要求本文
[なし] :
Response
応答には、HTTP 状態コードおよび一連の応答ヘッダーが含まれています。
status code
操作が正常に終了すると、状態コード 201 (Created) が返されます。 状態コードの詳細については、「 状態とエラー コード」を参照してください。
応答ヘッダー
この操作の応答には、次のヘッダーが含まれています。 応答には、追加の標準 HTTP ヘッダーを含めることもできます。 すべての標準ヘッダーは 、HTTP/1.1 プロトコル仕様に準拠しています。
構文 | 説明 |
---|---|
x-ms-snapshot: <DateTime> |
スナップショットをDateTime 一意に識別する値を返します。 このヘッダーの値はスナップショットバージョンを示し、後続の要求で使用してスナップショットにアクセスできます。 この値は非透過的です。 |
ETag |
ETag スナップショットの 。 要求バージョンが 2011-08-18 以降の ETag 場合、値は引用符で囲まれます。 スナップショットは書き込むことができないため、特定のスナップショットの はETag 変更されません。 ただし、要求にETag 新しいメタデータが指定されているSnaphot Blob 場合、スナップショットの はベース BLOB とは異なります。 要求にメタデータが指定されていない場合、ETag スナップショットが取得された時点で、スナップショットの はベース BLOB の と同じになります。 |
Last-Modified |
スナップショットの最終更新時刻。 詳細については、「 ヘッダーでの日時値の表現」を参照してください。 スナップショットを書き込むことができないため、特定のスナップショットの最終変更時刻は変更されません。 ただし、要求に新しいメタデータが指定されている Snaphot Blob 場合、スナップショットの最終変更時刻はベース BLOB の時刻とは異なります。 要求にメタデータが指定されていない場合、スナップショットの最終変更時刻は、スナップショットが取得された時点のベース BLOB と同じになります。 |
x-ms-request-id |
行われた要求を一意に識別し、要求のトラブルシューティングに使用できます。 詳細については、「 API 操作のトラブルシューティング」を参照してください。 |
x-ms-version |
要求の実行に使用された Blob Storage のバージョンを示します。 このヘッダーはバージョン 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 場合は、ヘッダーの値と同じです。 この値は、最大 1,024 文字の可視 ASCII 文字です。 ヘッダーが x-ms-client-request-id 要求に存在しない場合、応答には存在しません。 |
応答本文
[なし] :
承認
Azure Storage でデータ アクセス操作を呼び出す場合は、承認が必要です。 操作は、以下で Snapshot Blob
説明するように承認できます。
重要
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、またはサービス プリンシパルが操作を呼び出Snapshot Blob
すために必要な RBAC アクションと、このアクションを含む最小特権の組み込み Azure RBAC ロールを次に示します。
- Azure RBAC アクション:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write または Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action
- 最小特権の組み込みロール:ストレージ BLOB データ共同作成者
Azure RBAC を使用したロールの割り当ての詳細については、「 BLOB データにアクセスするための Azure ロールの割り当て」を参照してください。
注釈
スナップショットは読み取り専用の BLOB です。 スナップショットを作成した後は、読み取り、コピー、または削除できますが、変更することはできません。
スナップショットは BLOB データをバックアップするのに便利な方法です。 スナップショットを使用して、Blob のコピーを呼び出して BLOB を以前のバージョンに復元し、ベース BLOB をそのスナップショットで上書きできます。
スナップショットを作成すると、Blob Storage は、そのベース 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 がサポートするスナップショットの数に制限はありません。 既存のスナップショットは上書きされません。 それらを明示的に削除するには、 Delete Blob を呼び出し、ヘッダーを x-ms-include-snapshots
適切な値に設定します。
への呼び出しが Snapshot Blob
成功すると、 DateTime
応答ヘッダーの値が x-ms-snapshot
返されます。 その後、このDateTime
値を使用して、特定のスナップショット バージョンに対して読み取り、削除、またはコピー操作を実行できます。 BLOB 名の後に を指定することで、スナップショットに対して有効な Blob Storage 操作を?snapshot=<DateTime>
呼び出すことができます。
BLOB のスナップショットを作成すると、次のシステム プロパティが同じ値でスナップショットにコピーされます。
Content-Type
Content-Encoding
Content-Language
Content-Length
Cache-Control
Content-MD5
x-ms-blob-sequence-number
(ページ BLOB の場合のみ)x-ms-blob-committed-block-count
(追加 BLOB の場合のみ)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 と常に同じサイズです。 スナップショット BLOB のヘッダーのContent-Length
値は、ベース BLOB のヘッダーと同じになります。
スナップショットに 1 つまたは複数の新しいメタデータ値を指定するには、要求の x-ms-meta-name:value
ヘッダーを指定します。 このヘッダーが指定されていない場合、ベース BLOB に関連付けられているメタデータがスナップショットにコピーされます。
ベース BLOB に関連付けられているタグはすべて、スナップショットにコピーされます。 スナップショットの新しいタグ値を設定することはできません。
条件が満たされた場合にのみ、要求に条件付きヘッダーを指定して BLOB のスナップショットを取得できます。 指定した条件が満たされていない場合、スナップショットは作成されません。 このサービスは、状態コード 412 (前提条件が失敗しました) と、満たされていない条件に関する追加のエラー情報を返します。
ベース BLOB にアクティブなリースがある場合は、次のいずれかの条件が要求に当てはまる限り、BLOB のスナップショットを取得できます。
要求に条件付きの
x-ms-lease-id
ヘッダーが指定され、ベース BLOB のアクティブ リース ID が含まれている。 この条件では、リースがアクティブで、指定したリース ID が BLOB に関連付けられていると一致する場合にのみ、スナップショットを作成することを指定します。ヘッダーはまったく
x-ms-lease-id
指定されていません。この場合、排他書き込みリースは無視されます。
ベース BLOB に関連付けられているリースは、スナップショットにコピーされません。 スナップショットをリースすることはできません。
BLOB のコピー操作を使用してベース BLOB をコピー する場合、ベース BLOB のスナップショットはコピー先 BLOB にコピーされません。 コピー先 BLOB をコピーで上書きした場合、コピー先 BLOB に関連付けられたスナップショットは名前が変わっても元のままです。
スナップショット BLOB をベース BLOB にコピーすることにより、BLOB を以前のバージョンに復元できます。 スナップショットは元のままで、ベース BLOB が読み取りおよび書き込みできるコピーで上書きされます。
注意
スナップショットを昇格しても、ストレージ リソースに追加料金は発生しません。 これは、ブロックまたはページがスナップショットとベース BLOB の間で共有されるためです。
REST バージョン 2019-12-12 以降では、スナップショットに BLOB 層を設定できます。 階層がルート BLOB に設定されている場合、すべてのスナップショットはベース BLOB から層を継承します。 アーカイブされた BLOB に対してスナップショットを取得すると失敗します。 オブジェクトに階層を明示的に設定すると、オブジェクトのフル サイズに対する課金が発生します。 階層が設定された BLOB のスナップショットを取得すると、ルート BLOB とスナップショットの完全なコピー課金が行われます。 ブロック BLOB レベルの階層化の詳細については、「 ホット、クール、アーカイブ ストレージ層」を参照してください。
Azure Premium Storage アカウントと Standard ストレージ アカウントには、スナップショットに関していくつかの違いがあります。
Premium Storage アカウントのページ BLOB あたりのスナップショットの数は 100 に制限されます。 この制限を超えると、
Snapshot Blob
エラー コード 409 (スナップショット数超過) が返されます。Premium Storage アカウント内のページ BLOB のスナップショットを 10 分に 1 回取得できます。 このレートを超えると、
Snapshot Blob
エラー コード 409 (スナップショット操作速度超過) が返されます。Get BLOB を使用して、Premium Storage アカウント内のページ BLOB のスナップショットを読み取ることはできません。 この状況では、サービスはエラー コード 400 (無効な操作) を返します。 ただし、スナップショットに対して Get Blob Properties と Get BLOB Metadata を呼び出すことができます。
スナップショットを読み取るために、BLOB のコピー操作を使用して、アカウント内の別のページ BLOB にスナップショットをコピーできます。 すでにスナップショットがある BLOB にはスナップショットをコピーできません。 コピー先 BLOB にスナップショットがあると、
Copy Blob
でエラー コード 409 (SnapshotsPresent) が返されます。
詳細については、「Azure Premium Storage での Blob Storage 操作の使用」を参照してください。
バージョン管理を有効にすると、BLOB のスナップショットを作成すると、新しいバージョンも生成され、以前のバージョンのベース BLOB が保存されます。 パラメーターは x-ms-version-id
、新しいバージョンの BLOB の不透明な DateTime
値を返します。
請求
価格要求は、Blob Storage REST API を介して直接、または Azure Storage クライアント ライブラリから Blob Storage API を使用するクライアントから送信できます。 これらの要求では、トランザクションあたりの料金が発生します。 トランザクションの種類は、アカウントの課金方法に影響します。 たとえば、読み取りトランザクションは、書き込みトランザクションとは異なる課金カテゴリに計上されます。 次の表は、ストレージ アカウントの種類に基づく要求の課金カテゴリ Snapshot Blob
を示しています。
操作 | ストレージ アカウントの種類 | 課金カテゴリ |
---|---|---|
Snapshot Blob | Premium ブロック BLOB Standard 汎用 v2 Standard 汎用 v1 |
操作を読み取ります。 |
指定した課金カテゴリの価格については、「Azure Blob Storage価格」を参照してください。