租用容器

Lease Container作業會在容器上建立及管理鎖定,藉以刪除作業。 鎖定持續時間的範圍是 15 到 60 秒,也可以設為無限。

您可以在下列其中一種模式中呼叫 Lease Container 作業:

  • Acquire:要求新租用。

  • Renew:更新現有的租用。

  • Change:變更現有租用的識別碼。

  • Release如果不再需要租用,則為釋放租用,讓另一個用戶端可以立即取得容器的租用。

  • Break,以結束租用,但請確定另一個用戶端在目前的租用期間到期之前,無法取得新的租用。

注意

2012-02-12 版和更新版提供 Lease Container 作業。

要求

您可以建構 Lease Container 要求,如下所示。 建議使用 HTTPS。 以記憶體帳戶的名稱取代 myaccount

方法 要求 URI HTTP 版本
PUT https://myaccount.blob.core.windows.net/mycontainer?comp=lease&restype=container HTTP/1.1

若要指定根容器,請輸入 $root 做為容器名稱。

模擬記憶體服務 URI

當您對模擬記憶體服務提出要求時,請將模擬器主機名和 Azure Blob 儲存體 埠指定為 127.0.0.1:10000,後面接著仿真的記憶體帳戶名稱。

方法 要求 URI HTTP 版本
PUT http://127.0.0.1:10000/mycontainer?comp=lease&restype=container HTTP/1.0

HTTP/1.1

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

URI 參數

您可以在要求 URI 上指定下列額外參數。

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

要求標頭

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

要求標頭 描述
Authorization 必要。 指定授權配置、帳戶名稱和簽章。 如需詳細資訊,請參閱授權對 Azure 儲存體提出要求
Datex-ms-date 必要。 指定要求的「國際標準時間」(UTC)。 如需詳細資訊,請參閱授權對 Azure 儲存體提出要求
x-ms-version 選擇性。 指定用於這個要求的作業版本。 如需詳細資訊,請參閱 Azure 儲存體服務的版本
x-ms-lease-id: <ID> 需要更新、變更或釋放租用。

您可以使用任何有效的 GUID 字串格式來指定 的值 x-ms-lease-id 。 如需有效格式的清單,請參閱 Guid 建構函式 (字串)
x-ms-lease-action: <acquire ¦ renew ¦ change ¦ release ¦ break> acquire:要求新租用。 如果容器沒有作用中的租用,Blob 記憶體會在容器上建立租用,並傳回新的租用標識符。 如果容器有作用中的租用,您只能使用使用中租用標識符來要求新的租用。 不過,您可以針對永不過期的租用指定新的 x-ms-lease duration,包括負一 (-1) 。

renew:更新租用。 如果要求上指定的租用標識碼符合與容器相關聯的租用標識碼,您可以更新租用。 請注意,即使租用已過期,也可以更新租用,只要容器自該租用到期后尚未再次租用即可。 當您更新租用時,租用持續時間的時鐘會重設。

change:變更作用中租用的租用識別碼。 change必須包含 中的x-ms-lease-id目前租用標識碼,以及 中的x-ms-proposed-lease-id新租用標識符。

release:釋放租用。 如果要求上指定的租用標識碼符合與容器相關聯的租用標識碼,您可以釋放租用。 釋放租用可讓另一個用戶端在發行完成後立即取得容器的租用。

break:如果容器有作用中的租用,則會中斷租用。 租用中斷之後,就無法更新。 任何授權的要求都可以中斷租用。 不需要要求即可指定相符的租用標識符。 當租用中斷時,允許租用中斷期間經過。 您目前只能在容器上執行 breakrelease 租用作業。 當租用成功中斷時,回應會指出可取得新租用之前的間隔秒數。

已中斷的租用也可以釋放。 用戶端可以立即取得已釋放的容器租用。
x-ms-lease-break-period: N 選擇性。 break針對作業,此標頭是租用在中斷之前應該繼續的建議持續時間,介於 0 到 60 秒之間。 只有在租用剩餘的時間還短時,才會使用此中斷期間。 如果時間較長,則會使用租用的剩餘時間。 在中斷期間到期之前,將無法使用新的租用,但租用可保留超過中斷期間。 如果此標頭未與作業一起 break 出現,則會在剩餘租用期間經過之後中斷固定持續時間租用,而無限租用會立即中斷。
x-ms-lease-duration: -1 ¦ n seconds acquire 的必要項目。 指定租用的持續時間 (秒數),或指定負一 (-1),代表租用永不到期。 非無限期的租用可以介於 15 到 60 秒之間。 無法使用 或 change來變更renew租用持續時間。
x-ms-proposed-lease-id: <ID> 選擇性的 acquire, 為 ,且 為 change必要專案。 建議的租用識別碼,使用 GUID 字串格式。 如果建議的租用識別碼的格式不正確,Blob 記憶體會 400 (Invalid request) 傳回 。 如需有效格式的清單,請參閱 Guid 建構函式 (字串)
Origin 選擇性。 指定發出要求的來源。 此標頭的顯示會導致在回應上跨原始資源共用 (CORS) 標頭。 如需詳細資訊 ,請參閱記憶體服務的CORS支援
x-ms-client-request-id 選擇性。 提供客戶端產生的不透明值,其中包含設定記錄時記錄的 1 kibibyte (KiB) 字元限制。 強烈建議您使用此標頭,將用戶端活動與伺服器接收的要求相互關聯。 如需詳細資訊,請參閱監視 Azure Blob 儲存體

只有在符合指定的條件時,此作業也支援使用條件標頭來執行作業。 如需詳細資訊,請參閱 指定 Blob 記憶體作業的條件式標頭

要求本文

無。

範例要求

下列範例要求會示範如何取得租用:

  
Request Syntax:  
PUT https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=lease HTTP/1.1  
  
Request Headers:  
x-ms-version: 2012-02-12  
x-ms-lease-action: acquire  
x-ms-lease-duration: -1  
x-ms-proposed-lease-id: 1f812371-a41d-49e6-b123-f4b542e851c5  
x-ms-date: Thu, 26 Jan 2012 23:30:18 GMT  
Authorization: SharedKey testaccount1:esSKMOYdK4o+nGTuTyeOLBI+xqnqi6aBmiW4XI699+o=  
  

回應

回應包括 HTTP 狀態碼和一組回應標頭。

狀態碼

為租用作業傳回的成功狀態碼如下:

  • Acquire:成功的作業會傳回狀態碼「201 (已建立)」。

  • Renew:成功的作業會傳回狀態碼「200 (OK)」。

  • Change:成功的作業會傳回狀態碼「200 (OK)」。

  • Release:成功的作業會傳回狀態碼「200 (OK)」。

  • Break:成功的作業會傳回狀態碼「202 (已接受)」。

如需狀態代碼的相關信息,請參閱 狀態和錯誤碼

回應標頭

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

語法 描述
ETag ETag容器的 。 此標頭會針對針對 2013-08-15 版和更新版本提出的要求傳回,且 ETag 此值會以引號括住。 Lease Container 針對 2013-08-15 版和更新版本的作業不會修改此屬性,但舊版會這麼做。
Last-Modified 針對針對 2013-08-15 版和更新版本提出的要求傳回。 傳回上次修改容器的日期和時間。 如需詳細資訊,請參閱 標頭中的日期時間值表示

任何修改容器或其屬性或元數據的作業,會更新上次修改的時間。 這包括設定容器的許可權。 Blob 上的作業不會影響容器的上次修改時間。 Lease Container 針對 2013-08-15 版和更新版本的作業不會修改此屬性,但舊版會這麼做。
x-ms-lease-id: <id> 當您要求租用時,Blob 記憶體會傳回唯一的租用標識符。 當租用為作用中時,您必須包含租用識別碼,以及刪除容器或是更新、變更或釋放租用的任何要求。

成功的更新作業也會傳回作用中租用的租用識別碼。
x-ms-lease-time: seconds 在租用期間內保留的近似時間 (以秒計)。 只有要求中斷租用成功,才會傳回此標頭。 如果是立即中斷,則傳回 0。
x-ms-request-id 此標頭可唯一識別提出的要求,並可用於對要求進行疑難解答。 如需詳細資訊,請參閱 針對 API 作業進行疑難解答
x-ms-version 指出用來執行要求的 Blob 記憶體版本。 對 2009-09-19 及更新版本提出要求會傳回此標頭。
Date UTC 日期/時間值,指出起始響應的時間。 服務會產生此值。
Access-Control-Allow-Origin 如果要求包含 Origin 標頭,且已啟用符合規則的 CORS,則會傳回 。 此標頭會在相符時傳回原始要求標頭的值。
Access-Control-Expose-Headers 如果要求包含 Origin 標頭,且已啟用符合規則的 CORS,則會傳回 。 傳回向要求的用戶端或簽發者公開的回應標頭清單。
Access-Control-Allow-Credentials 如果要求包含 Origin 標頭,且 CORS 會以不允許所有原始來源的相符規則啟用,則會傳回 。 這個標頭會設定為 true
x-ms-client-request-id 您可以使用此標頭來針對要求和對應的回應進行疑難解答。 如果此標頭存在於要求中,則此標頭的值等於標頭的值 x-ms-client-request-id 。 此值最多為 1,024 個可見的 ASCII 字元。 x-ms-client-request-id如果要求中沒有標頭,它就不會出現在回應中。

回應本文

無。

範例回應

以下是要求取得租用的範例回應:

Response Status:  
HTTP/1.1 201 Created  
  
Response Headers:  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0  
x-ms-request-id: cc6b209a-b593-4be1-a38a-dde7c106f402  
x-ms-version: 2012-02-12  
x-ms-lease-id: 1f812371-a41d-49e6-b123-f4b542e851c5  
Date: Thu, 26 Jan 2012 23:30:18 GMT  
  

授權

當您在 Azure 記憶體中呼叫任何資料存取作業時,需要授權。 您可以依照下列各節所述來授權 Lease Container 作業。

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 的存取權。

權限

需要下列 RBAC 動作,Microsoft Entra 使用者、群組或服務主體才能呼叫Lease Container作業,以及包含此動作的最低特殊許可權內建 Azure RBAC 角色:

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

備註

容器上的租用提供刪除容器的專有存取權。 容器租用只會控制使用 刪除容器 作業刪除容器的能力。 若要刪除具有作用中租用的容器,用戶端必須使用刪除要求納入作用中的租用識別碼。 如果未包含租用標識符,作業會失敗, (前置條件失敗) 。 所有其他容器作業都會在租用的容器上成功,而不包含租用標識碼。 租用會在取得租用時所指定的持續時間授與租用,這介於 15 到 60 秒之間,或無限持續時間。

當用戶端取得租用時,會傳回租用識別碼。 如果取得要求中未指定租用標識符,Blob 記憶體就會產生租用標識碼。 用戶端可以使用此租用標識符來更新租用、變更其租用標識碼,或釋放租用。 下圖顯示租用的可能狀態,以及造成租用狀態變更的命令或事件。

容器租用狀態和狀態變更觸發程序的圖表。

租用可以是五種狀態的其中一種,根據租用是否已鎖定或解除鎖定,以及租用是否在該狀態中可更新。 上圖中顯示的租用動作會導致狀態轉換。

更新狀態 鎖定租用 解除鎖定的租用
可更新租用 已租用 已過期
非可更新租用 中斷 中斷、可用
  • Available:租用已解除鎖定,並可取得。 允許的動作: acquire

  • Leased:租用已鎖定。 允許的動作:acquire (僅限相同的租用識別碼)、renewchangereleasebreak

  • Expired:租用持續時間到期。 允許的動作:acquirerenewreleasebreak

  • Breaking,租用已中斷,但租用會繼續鎖定,直到中斷期間過期為止。 允許的動作:releasebreak

  • Broken、租用已中斷,而中斷期間已過期。 允許的動作:acquirereleasebreak

Blob 記憶體會在容器租用過期之後維護租用標識碼。 用戶端可以使用過期的租用標識碼來更新或釋放租用。 如果客戶端嘗試使用其先前的租用標識符來更新或釋放過期的租用,且要求失敗,則自用戶端租用后,容器會再次租用或刪除。

如果租用到期,而不是明確釋放,用戶端可能需要等候最多一分鐘,才能取得容器的新租用。 不過,用戶端可以立即以到期的租用識別碼更新租用。

呼叫 不會更新Lease Container容器的 Last-Modified-Time 屬性。

下表顯示租用處於各種租用狀態時,在容器上執行動作的結果。 字母 (A) 、 (B) 和 (C) 代表租用標識符,而 (X) 代表 Blob 記憶體所產生的租用標識符。

容器上的使用嘗試結果 (依租用狀態)

動作 可用 已租用 (A) 正在中斷 (A) 已中斷 (A) 已過期 (A)
使用 A) 刪除 ( 失敗 (412) 已租用 (A),刪除成功 正在中斷 (A),刪除成功 失敗 (412) 失敗 (412)
使用 (B) 刪除 失敗 (412) 失敗 (409) 失敗 (412) 失敗 (412) 失敗 (412)
刪除,未指定租用 可用,刪除成功 失敗 (412) 失敗 (412) 可用,刪除成功 可用,刪除成功
具有 A (的其他作業) 失敗 (412) 已租用 (A),作業成功 正在中斷 (A),作業成功 失敗 (412) 失敗 (412)
(B 的其他作業) 失敗 (412) 失敗 (409) 失敗 (409) 失敗 (412) 失敗 (412)
作業,未指定租用 可用,作業成功 已租用 (A),作業成功 正在中斷 (A),作業成功 已中斷 (A),作業成功 已過期 (A),作業成功

容器上的租用作業結果 (依租用狀態)

動作 可用 已租用 (A) 正在中斷 (A) 已中斷 (A) 已過期 (A)
Acquire:沒有建議的租用識別碼 已租用 (X) 失敗 (409) 失敗 (409) 已租用 (X) 已租用 (X)
Acquire (A) 已租用 (A) 已租用 (A),新的持續時間 失敗 (409) 已租用 (A) 已租用 (A)
Acquire (B) 已租用 (B) 失敗 (409) 失敗 (409) 已租用 (B) 已租用 (B)
Break 期間 = 0 失敗 (409) 已中斷 (A) 已中斷 (A) 已中斷 (A) 已中斷 (A)
Break,期間>0 失敗 (409) 正在中斷 (A) 正在中斷 (A) 已中斷 (A) 已中斷 (A)
Change,(A) 到 (B) 失敗 (409) 已租用 (B) 失敗 (409) 失敗 (409) 失敗 (409)
Change,(B) 到 (A) 失敗 (409) 已租用 (A) 失敗 (409) 失敗 (409) 失敗 (409)
Change,(B) 到 (C) 失敗 (409) 失敗 (409) 失敗 (409) 失敗 (409) 失敗 (409)
Renew (A) 失敗 (409) 已租用 (A),到期時鐘重設 失敗 (409) 失敗 (409) 已租用 (A)
Renew (B) 失敗 (409) 失敗 (409) 失敗 (409) 失敗 (409) 失敗 (409)
Release (A) 失敗 (409) 可用 可用 可用 可用
Release (B) 失敗 (409) 失敗 (409) 失敗 (409) 失敗 (409) 失敗 (409)
持續時間到期 可用 已過期 (A) 已中斷 (A) 已中斷 (A) 已過期 (A)

計費

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

作業 儲存體帳戶類型 計費類別
租用容器 (取得、發行、更新) 進階區塊 Blob
標準一般用途 v2
其他作業
租用容器 (取得、發行、更新) 標準一般用途 v1 讀取作業
租用容器 (中斷、變更) 進階區塊 Blob
標準一般用途 v2
其他作業
租用容器 (中斷、變更) 標準一般用途 v1 寫入作業

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

另請參閱

授權對 Azure 記憶體的要求
狀態和錯誤碼
Blob 記憶體錯誤碼
租用 Blob