使用 .NET 建立和管理容器租用
本文說明如何使用適用於 .NET 的 Azure 儲存體用戶端程式庫來建立和管理容器租用。 您可以使用用戶端程式庫來取得、更新、釋放和中斷容器租用。
必要條件
設定您的環境
如果沒有現有的專案,本章節會說明如何設定專案以使用適用於 .NET 的 Azure Blob 儲存體用戶端程式庫。 這些步驟包括封裝安裝、新增 using
指示詞,以及建立已授權的用戶端物件。 如需詳細資訊,請參閱 開始使用 Azure Blob 儲存體和 .NET。
安裝套件
從您的專案目錄中,使用 dotnet add package
命令安裝 Azure Blob 儲存體和 Azure 身分識別客戶端程式庫的套件。 需要 Azure.Identity 套件才能對 Azure 服務進行無密碼連線。
dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity
新增 using
指示詞
將這些 using
指示詞新增至程式碼檔案頂端:
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
本文中的某些程式碼範例可能需要其他using
指示詞。
建立用戶端物件
若要將應用程式連線至 Blob 儲存體,請建立 BlobServiceClient類別的執行個體。 下列範例示範如何使用 DefaultAzureCredential
來建立用戶端物件以進行授權:
public BlobServiceClient GetBlobServiceClient(string accountName)
{
BlobServiceClient client = new(
new Uri($"https://{accountName}.blob.core.windows.net"),
new DefaultAzureCredential());
return client;
}
您可以在 .NET 應用程式中註冊相依性插入的服務用戶端。
您也可以為特定容器或 Blob 建立客戶端物件。 若要深入了解如何建立及管理用戶端物件,請參閱建立和管理與資料資源互動的用戶端端物件 (部分機器翻譯)。
授權
授權機制必須具有使用容器租用所需的權限。 如需使用 Microsoft Entra ID 授權 (建議使用),您需要 Azure RBAC 內建角色儲存體 Blob 資料參與者或更高權限。 若要深入了解,請參閱租用容器 (REST API) (部分機器翻譯) 的授權指導。
關於容器租用
租用會在容器上建立及管理刪除作業的鎖定。 鎖定持續時間的範圍是 15 到 60 秒,也可以設為無限。 容器上的租用會提供刪除容器的專有存取權。 容器租用只會控制使用刪除容器 REST API 作業來刪除容器的功能。 若要刪除具有作用中租用的容器,用戶端必須使用刪除要求納入作用中的租用識別碼。 在未包含租用識別碼的情況下,所有其他容器作業都可以在租用的容器上成功執行。 如果您已啟用容器虛刪除,則可以還原已刪除的容器。
若要深入了解租用狀態,以及何時可以在租用上執行指定動作,請參閱租用狀態和動作。
租用作業是由 BlobLeaseClient 類別處理,其提供一個用戶端,包含 Blob 和容器的所有租用作業。 若要深入了解使用用戶端程式庫的 Blob 租用,請參閱使用 .NET 建立和管理 Blob 租用。
取得租用
取得容器租用時,會取得一個租用識別碼,讓您的程式碼可用來在容器上運作。 如果容器已經有作用中的租用,您只能使用作用中的租用識別碼來要求新的租用。 不過,您可以指定新的租用期間。
若要取得租用,請建立 BlobLeaseClient 類別的執行個體,然後使用下列其中一種方法:
下列範例會取得容器的 30 秒租用:
public static async Task<BlobLeaseClient> AcquireContainerLeaseAsync(
BlobContainerClient containerClient)
{
// Get a BlobLeaseClient object to work with a container lease
BlobLeaseClient leaseClient = containerClient.GetBlobLeaseClient();
Response<BlobLease> response =
await leaseClient.AcquireAsync(duration: TimeSpan.FromSeconds(30));
// Use response.Value to get information about the container lease
return leaseClient;
}
更新租用
如果在要求上指定的租用識別碼符合該容器相關聯的租用識別碼,則可以更新容器租用。 租用到期之後,只要容器未曾再度租用,即使租用已到期,還是可以更新。 當您更新租用時,租用期間會重設。
若要更新租用,請在 BlobLeaseClient 執行個體上使用下列其中一種方法:
下列範例會更新容器租用:
public static async Task RenewContainerLeaseAsync(
BlobContainerClient containerClient,
string leaseID)
{
// Get a BlobLeaseClient object to work with a container lease
BlobLeaseClient leaseClient = containerClient.GetBlobLeaseClient(leaseID);
await leaseClient.RenewAsync();
}
發行租用
如果在要求上指定的租用識別碼符合該容器相關聯的租用識別碼,則可以發行容器租用。 發行租用可讓其他用戶端在發行完成時,立即取得容器的租用。
您可以在 BlobLeaseClient 執行個體上使用下列其中一種方法來釋放租用:
下列範例會釋放容器上的租用:
public static async Task ReleaseContainerLeaseAsync(
BlobContainerClient containerClient,
string leaseID)
{
// Get a BlobLeaseClient object to work with a container lease
BlobLeaseClient leaseClient = containerClient.GetBlobLeaseClient(leaseID);
await leaseClient.ReleaseAsync();
}
中斷租用
如果容器具有作用中的租用,您可以中斷容器租用。 任何已授權的要求都可以中斷租用;此要求不需要指定相符的租用識別碼。 租用在中斷之後會無法更新,且中斷租用之後的一段期間内將無法取得新租用,直到原始租用到期或釋放爲止。
您可以在 BlobLeaseClient 執行個體上使用下列其中一種方法來中斷租用:
下列範例會中斷容器上的租用:
public static async Task BreakContainerLeaseAsync(
BlobContainerClient containerClient)
{
// Get a BlobLeaseClient object to work with a container lease
BlobLeaseClient leaseClient = containerClient.GetBlobLeaseClient();
await leaseClient.BreakAsync();
}
租用狀態和動作
下圖會顯示租用的五個狀態,以及會導致租用狀態變更的命令或事件。
下表會列出五個租用狀態、提供每個租用狀態的簡短描述,並列出指定狀態中允許的租用動作。 這些租用動作會導致狀態轉換,如下圖所示。
租用狀態 | 描述 | 允許的租用動作 |
---|---|---|
可用的 | 租用已解除鎖定,並且可以取得。 | acquire |
已租用 | 租用已鎖定。 | acquire (僅限相同的租用識別碼)、renew 、change 、release 和 break |
已到期 | 租用期間到期。 | acquire 、renew 、release 和 break |
正在中斷 | 租用已中斷,但租用將繼續鎖定,直到中斷期間到期為止。 | release 和 break |
中斷 | 租用已中斷,且中斷期間已到期。 | acquire 、release 和 break |
在租用到期後,租用識別碼會由 Blob 服務維護,直到容器修改或再度租用。 用戶端可能會嘗試使用過期的租用識別碼來更新或發行租用。 如果要求失敗,用戶端會知道容器已再次租用,或自租用上次作用之後已刪除容器。
如果租用到期,而不是明確地發行,用戶端可能需要稍候一分鐘,才能為容器取得新的租用。 不過,用戶端可以立即以到期的租用識別碼更新租用。
資源
若要深入了解如何使用適用於 .NET 的 Azure Blob 儲存體用戶端程式庫來管理容器租用,請參閱下列資源。
程式碼範例
- 檢視本文中的程式碼範例 (GitHub) (英文)
REST API 操作
適用於 .NET 的 Azure SDK 包含建置在 Azure REST API 之上的程式庫,可讓您透過熟悉的 .NET 範例與 REST API 作業進行互動。 用來管理容器租用的用戶端程式庫方法會使用下列 REST API 作業:
用戶端程式庫資源
另請參閱
相關內容
- 本文是適用於 .NET 的 Blob 儲存體開發人員指南的一部分。 若要深入了解,請參閱位於建置 .NET 應用程式的開發人員指南文章完整清單。