租用容器
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 儲存體提出要求。 |
Date 或 x-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 :如果容器有作用中的租用,則會中斷租用。 租用中斷之後,就無法更新。 任何授權的要求都可以中斷租用。 不需要要求即可指定相符的租用標識符。 當租用中斷時,允許租用中斷期間經過。 您目前只能在容器上執行 break 和 release 租用作業。 當租用成功中斷時,回應會指出可取得新租用之前的間隔秒數。已中斷的租用也可以釋放。 用戶端可以立即取得已釋放的容器租用。 |
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
作業,如下列各節所述。
重要
Microsoft 建議使用 Microsoft Entra ID 搭配受控識別來授權對 Azure 記憶體的要求。 相較於共用密鑰授權,Microsoft Entra ID 提供較佳的安全性和方便使用。
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 動作: Microsoft.Storage/storageAccounts/blobServices/containers/write
- 最低特殊許可權內建角色: 記憶體 Blob 數據參與者
若要深入瞭解如何使用 Azure RBAC 指派角色,請參閱 指派 Azure 角色以存取 Blob 數據。
備註
容器上的租用提供刪除容器的專有存取權。 容器租用只會控制使用 刪除容器 作業刪除容器的能力。 若要刪除具有作用中租用的容器,用戶端必須使用刪除要求納入作用中的租用識別碼。 如果未包含租用標識符,作業會失敗, (前置條件失敗) 。 所有其他容器作業都會在租用的容器上成功,而不包含租用標識碼。 租用會在取得租用時所指定的持續時間授與租用,這介於 15 到 60 秒之間,或無限持續時間。
當用戶端取得租用時,會傳回租用識別碼。 如果取得要求中未指定租用標識符,Blob 記憶體就會產生租用標識碼。 用戶端可以使用此租用標識符來更新租用、變更其租用標識碼,或釋放租用。 下圖顯示租用的可能狀態,以及造成租用狀態變更的命令或事件。
租用可以是五種狀態的其中一種,根據租用是否已鎖定或解除鎖定,以及租用是否在該狀態中可更新。 上圖中顯示的租用動作會導致狀態轉換。
更新狀態 | 鎖定租用 | 解除鎖定的租用 |
---|---|---|
可更新租用 | 已租用 | 已過期 |
非可更新租用 | 中斷 | 中斷、可用 |
Available
:租用已解除鎖定,並可取得。 允許的動作:acquire
。Leased
:租用已鎖定。 允許的動作:acquire
(僅限相同的租用識別碼)、renew
、change
、release
和break
。Expired
:租用持續時間到期。 允許的動作:acquire
、renew
、release
和break
。Breaking
,租用已中斷,但租用會繼續鎖定,直到中斷期間過期為止。 允許的動作:release
和break
。Broken
、租用已中斷,而中斷期間已過期。 允許的動作:acquire
、release
和break
。
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 儲存體 定價。