快照 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 儲存體 埠指定為 127.0.0.1:10000,後面接著仿真的帳戶名稱:

PUT 方法要求 URI HTTP 版本
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=snapshot HTTP/1.1

如需詳細資訊,請參閱使用 Azure 模擬器進行本機 Azure 儲存體開發

URI 參數

您可以在要求 URI 上指定下列其他參數。

參數 描述
timeout 選擇性。 timeout 參數以秒為單位。 如需詳細資訊,請參閱 設定 Blob 記憶體作業的逾時

要求標頭

下表描述必要的和選用的要求標頭。

要求標頭 描述
Authorization 必要。 指定授權配置、帳戶名稱和簽章。 如需詳細資訊,請參閱授權對 Azure 儲存體提出要求
Datex-ms-date 必要。 指定要求的「國際標準時間」(UTC)。 如需詳細資訊,請參閱授權對 Azure 儲存體提出要求
x-ms-version 所有授權要求都需要。 指定用於這個要求的作業版本。 如需詳細資訊,請參閱 Azure 儲存體服務的版本
x-ms-meta-name:value 選擇性。 指定與 Blob 相關聯的使用者定義名稱/值組。 如果您未指定任何名稱/值組,作業會將基底 Blob 元數據複製到快照集。 如果您指定一或多個名稱/值組,則會使用指定的元數據建立快照集,而且元數據不會從基底 Blob 複製。

請注意,從 2009-09-19 版開始,元數據名稱必須遵守 C# 識別碼的命名規則。 如需詳細資訊 ,請參閱命名和參考容器、Blob 和元數據
If-Modified-Since 選擇性。 DateTime 值。 指定此條件式標頭以擷取 Blob 的快照集,只有在自指定的日期/時間以來已修改。 如果基底 Blob 尚未修改,Blob 記憶體會傳回狀態代碼 412 (前置條件失敗) 。
If-Unmodified-Since 選擇性。 DateTime 值。 指定這個條件式標頭以擷取 Blob 的快照集,只有在自指定的日期/時間以來尚未修改時。 如果基底 Blob 已修改,Blob 記憶體會傳回狀態代碼 412 (前置條件失敗) 。
If-Match 選擇性。 ETag 值。 ETag指定這個條件式標頭的值以擷取 Blob 的快照集,只有當其ETag值符合指定的值時。 如果值不符合,Blob 記憶體會傳回狀態代碼 412 (前置條件失敗) 。
If-None-Match 選擇性。 ETag 值。

ETag指定這個條件式標頭的值以擷取 Blob 的快照集,只有當其ETag值不符合指定的值時。 如果值相同,Blob 記憶體會傳回狀態代碼 412 (前置條件失敗) 。
x-ms-encryption-scope 選擇性。 指出用來加密要求內容的加密範圍。 2019-02-02 版和更新版本支援此標頭。
x-ms-lease-id:<ID> 選擇性。 如果您指定此標頭,只有在符合下列兩個條件時,才會執行作業:

- Blob 的租用目前為作用中。
- 要求中指定的租用標識碼符合 Blob 的租用標識碼。

如果指定此標頭,而且不符合上述任一條件,要求就會失敗。 作業 Snapshot Blob 失敗,狀態代碼為 412 (前置條件失敗) 。
x-ms-client-request-id 選擇性。 提供客戶端產生的不透明值,其中包含 1-kibibyte (KiB) 設定記錄時記錄在記錄中的字元限制。 強烈建議您使用此標頭,將用戶端活動與伺服器收到的要求相互關聯。 如需詳細資訊,請參閱監視 Azure Blob 儲存體

此作業也支援使用條件標頭來執行作業,只有在符合指定的條件時。 如需詳細資訊,請參閱 指定 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 (已建立)」。 如需狀態代碼的相關信息,請參閱 狀態和錯誤碼

回應標頭

這項作業的回應包括下列標頭。 回應也可以包含額外的標準 HTTP 標頭。 所有標準標頭都符合 HTTP/1.1 通訊協議規格

語法 描述
x-ms-snapshot: <DateTime> 傳回可唯一 DateTime 識別快照集的值。 此標頭的值表示快照集版本,您可以在後續要求中使用它來存取快照集。 請注意,此值為不透明。
ETag ETag快照集的 。 如果要求版本是 2011-08-18 或更新版本,此值 ETag 將會以引號括住。 請注意,無法寫入快照集,因此 ETag 特定快照集的 永遠不會變更。 不過, ETag 如果要求提供新的元數據,快照集的 會與基底 Blob 的 Snaphot Blob 快照集不同。 如果未使用要求指定任何元數據, ETag 則快照集的 會與建立快照集時基底 Blob 的相同。
Last-Modified 上次修改快照集的時間。 如需詳細資訊,請參閱 標頭中的日期時間值表示

請注意,無法寫入快照集,因此特定快照集的最後一次修改時間永遠不會變更。 不過,如果要求提供 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 。 此值最多為 1,024 個可見的 ASCII 字元。 x-ms-client-request-id如果要求中沒有標頭,則不會出現在回應中。

回應本文

無。

授權

在 Azure 記憶體中呼叫任何數據存取作業時,需要授權。 您可以授權 Snapshot Blob 作業,如下所示。

Azure 記憶體支援使用 Microsoft Entra ID 來授權 Blob 數據的要求。 使用 Microsoft Entra ID,您可以使用 Azure 角色型存取控制 (Azure RBAC) ,將許可權授與安全性主體。 安全性主體可能是使用者、群組、應用程式服務主體或 Azure 受控識別。 安全性主體是由 Microsoft Entra ID 驗證,以傳回 OAuth 2.0 令牌。 權杖接著可以用來授權對 Blob 服務的要求。

若要深入瞭解使用 Microsoft Entra ID 授權,請參閱使用 Microsoft Entra ID 授權 Blob 的存取權。

權限

以下是 Microsoft Entra 使用者、群組或服務主體呼叫Snapshot Blob作業所需的 RBAC 動作,以及包含此動作的最低特殊許可權 Azure RBAC 角色:

若要深入瞭解如何使用 Azure RBAC 指派角色,請參閱 指派 Azure 角色以存取 Blob 數據

備註

快照集提供 Blob 的唯讀版本。 建立快照集之後,您可以讀取、複製或刪除快照集,但無法加以修改。

快照集提供便利的方式將 Blob 資料備份。 您可以使用快照集,藉由呼叫 複製 Blob 將 Blob 還原至舊版,以覆寫基底 Blob 及其快照集。

當您建立快照集時,Blob 記憶體會傳回可唯一 DateTime 識別與其基底 Blob 相對之快照集的值。 您可以使用此值在快照集上執行進一步的作業。 請注意,您應該將此值 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 名稱後面指定 ?snapshot=<DateTime> ,呼叫任何對快照集有效的 Blob 記憶體作業。

當您建立 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 的值相同。

您可以在要求中指定 x-ms-meta-name:value 標頭,為快照集指定一個或多個新的中繼資料值。 如果未指定此標頭,則會將與基底 Blob 相關聯的元數據複製到快照集。

與基底 Blob 相關聯的任何標記會複製到快照集。 無法設定快照集的新標籤。

您只能在符合條件時,在要求上指定條件標頭,以擷取 Blob 的快照集。 如果不符合指定的條件,則不會建立快照集。 此服務會傳回狀態代碼 412 (前置條件失敗) ,以及未符合條件的其他錯誤資訊。

如果基底 Blob 具有作用中的租用,只要下列任一條件成立,您就可以擷取 Blob 的快照集:

  • 已指定條件式 x-ms-lease-id 標頭,並在要求中包含基底 Blob 的作用中租用識別碼。 此條件會指定只有在租用為使用中時,才會建立快照集,而指定的租用標識符符合與 Blob 相關聯的快照集。

  • x-ms-lease-id標頭完全未指定,在此情況下會忽略獨佔寫入租用。

請注意,與基底 Blob 相關聯的租用不會複製到快照集。 無法租用快照集。

當您使用 複製 Blob 作業複製 基底 Blob 時,不會將基底 Blob 的任何快照集複製到目的地 Blob。 用某個複本覆寫目的地 Blob 時,與目的地 Blob 相關聯的任何快照集都會保留名稱且保持不變。

您可以將快照集 Blob 複製到基底 Blob,以還原舊版的 Blob。 快照集會保留,但會以可讀取/寫入的複本覆寫基底 Blob。

注意

升級快照集不會產生記憶體資源的額外費用。 這是因為區塊或頁面會在快照集與基底 Blob 之間共用。

您可以從 REST 2019-12-12-12 版開始,在快照集上設定 Blob 層。 如果在根 Blob 上設定層,則所有快照集都會從基底 Blob 繼承該層。 在封存 Blob 上建立快照集將會失敗。 明確設定物件上的層會產生物件完整大小的計費。 擷取具有階層集的 Blob 快照集會導致根 Blob 和快照集的完整復本計費。 如需區塊 Blob 層級階層處理的詳細資訊,請參閱經常性 存取、非經常性存取和封存儲存層

在快照集方面,Azure 進階儲存體 帳戶和標準記憶體帳戶之間有一些差異:

  • 進階儲存體 帳戶中每個分頁 Blob 的快照集數目限制為 100。 如果超過該限制, Snapshot Blob 作業會傳回錯誤碼 409 (快照集計數超過) 。

  • 您可以每隔 10 分鐘一次在 進階儲存體 帳戶中建立分頁 Blob 的快照集。 如果超過該速率,作業 Snapshot Blob 會傳回錯誤碼 409 (快照集作業速率超過) 。

  • 您無法使用取得 Blob,在 進階儲存體 帳戶中讀取分頁 Blob 的快照集。 在此情況下,服務會傳回錯誤碼 400 (無效的作業) 。 不過,您可以針對快照集呼叫 取得 Blob 屬性取得 Blob 元數據

    若要讀取快照集,您可以使用 複製 Blob 作業,將快照集複製到帳戶中的其他分頁 Blob。 複製作業的目的地 Blob 不可以包含任何現有的快照集。 如果目的地 Blob 已有快照集,Copy Blob 會傳回錯誤碼 409 (SnapshotsPresent)。

如需詳細資訊,請參閱搭配 Azure 進階儲存體 使用 Blob 記憶體作業

啟用版本設定時,建立 Blob 的快照集也會產生新版本,並儲存舊版的基底 Blob。 參數 x-ms-version-id 會傳回新版本 Blob 的不透明 DateTime 值。

計費

定價要求可能源自使用 Blob 記憶體 API 的用戶端,無論是直接透過 Blob 記憶體 REST API,還是來自 Azure 記憶體用戶端連結庫。 這些要求會累算每個交易的費用。 交易類型會影響帳戶的收費方式。 例如,讀取交易會累算到與寫入交易不同的計費類別。 下表顯示根據記憶體帳戶類型的要求計費類別 Snapshot Blob

作業 儲存體帳戶類型 計費類別
快照 Blob 進階區塊 Blob
標準一般用途 v2
標準一般用途 v1
讀取作業

若要瞭解指定計費類別的定價,請參閱 Azure Blob 儲存體 定價

另請參閱

建立 Blob 的快照集

授權對 Azure 記憶體的要求

狀態和錯誤碼

Blob 記憶體錯誤碼