Vytváření a správa zapůjčení kontejnerů pomocí .NET
Tento článek ukazuje, jak vytvořit a spravovat zapůjčení kontejnerů pomocí klientské knihovny Azure Storage pro .NET. Klientskou knihovnu můžete použít k získání, obnovení, uvolnění a přerušení zapůjčení kontejnerů.
Požadavky
- Předplatné Azure – vytvoření bezplatného předplatného
- Účet úložiště Azure – Vytvoření účtu úložiště
- Nejnovější sada .NET SDK pro váš operační systém Nezapomeňte získat sadu SDK a ne modul runtime.
Nastavení prostředí
Pokud nemáte existující projekt, v této části se dozvíte, jak nastavit projekt pro práci s klientskou knihovnou Azure Blob Storage pro .NET. Kroky zahrnují instalaci balíčku, přidání using
direktiv a vytvoření autorizovaného objektu klienta. Podrobnosti najdete v tématu Začínáme se službou Azure Blob Storage a .NET.
Instalace balíčků
Z adresáře projektu nainstalujte balíčky pro klientské knihovny Azure Blob Storage a Azure Identity pomocí dotnet add package
příkazu. Balíček Azure.Identity je potřeba pro připojení bez hesla ke službám Azure.
dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity
Přidání using
direktiv
Na začátek souboru kódu přidejte tyto using
direktivy:
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
Některé příklady kódu v tomto článku mohou vyžadovat další using
direktivy.
Vytvoření objektu klienta
Pokud chcete připojit aplikaci ke službě Blob Storage, vytvořte instanci BlobServiceClient. Následující příklad ukazuje, jak vytvořit objekt klienta pro DefaultAzureCredential
autorizaci:
public BlobServiceClient GetBlobServiceClient(string accountName)
{
BlobServiceClient client = new(
new Uri($"https://{accountName}.blob.core.windows.net"),
new DefaultAzureCredential());
return client;
}
Klienta služby můžete zaregistrovat pro injektáž závislostí v aplikaci .NET.
Můžete také vytvořit klientské objekty pro konkrétní kontejnery nebo objekty blob. Další informace o vytváření a správě klientských objektů najdete v tématu Vytváření a správa klientských objektů, které pracují s datovými prostředky.
Autorizace
Autorizační mechanismus musí mít potřebná oprávnění pro práci s zapůjčením kontejneru. K autorizaci pomocí Microsoft Entra ID (doporučeno) potřebujete předdefinovanou roli Přispěvatel dat objektů blob služby Azure RBAC nebo vyšší. Další informace najdete v pokynech k autorizaci pro zapůjčení kontejneru (REST API).
O zapůjčení kontejnerů
Zapůjčení vytvoří a spravuje zámek kontejneru pro operace odstranění. Doba trvání zámku může být 15 až 60 sekund nebo může být nekonečná. Zapůjčení kontejneru poskytuje výhradní přístup k odstranění kontejneru. Zapůjčení kontejneru řídí pouze možnost odstranění kontejneru pomocí operace Odstranit rozhraní REST API kontejneru . Pokud chcete odstranit kontejner s aktivním zapůjčením, musí klient do žádosti o odstranění zahrnout aktivní ID zapůjčení. Všechny ostatní operace kontejneru jsou úspěšné u zapůjčeného kontejneru bez ID zapůjčení. Pokud jste povolili obnovitelné odstranění kontejneru, můžete odstraněné kontejnery obnovit.
Další informace o stavech zapůjčení a o tom, kdy můžete provést danou akci u zapůjčení, najdete v tématu Stavy zapůjčení a akce.
Operace zapůjčení zpracovává třída BlobLeaseClient , která poskytuje klienta obsahující všechny operace zapůjčení objektů blob a kontejnerů. Další informace o zapůjčení objektů blob pomocí klientské knihovny najdete v tématu Vytváření a správa zapůjčení objektů blob pomocí .NET.
Získání zapůjčení
Když získáte zapůjčení kontejneru, získáte ID zapůjčení, které váš kód může použít k provozu s kontejnerem. Pokud už kontejner má aktivní zapůjčení, můžete požádat pouze o nové zapůjčení pomocí id aktivního zapůjčení. Můžete ale zadat novou dobu zapůjčení.
Pokud chcete získat zapůjčení, vytvořte instanci třídy BlobLeaseClient a pak použijte jednu z následujících metod:
Následující příklad získá 30sekundové zapůjčení kontejneru:
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;
}
Prodloužení zapůjčení
Pokud ID zapůjčení zadané v požadavku odpovídá ID zapůjčení přidruženému ke kontejneru, můžete prodloužit zapůjčení kontejneru. Zapůjčení je možné obnovit i v případě, že vypršela jeho platnost, pokud se od vypršení platnosti tohoto zapůjčení znovu nepropůjčí kontejner. Když prodloužíte zapůjčení, doba trvání zapůjčení se resetuje.
Pokud chcete prodloužit zapůjčení, použijte pro instanci BlobLeaseClient jednu z následujících metod:
Následující příklad obnoví zapůjčení kontejneru:
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();
}
Uvolnění zapůjčení
Zapůjčení kontejneru můžete uvolnit, pokud ID zapůjčení zadané v požadavku odpovídá ID zapůjčení přidruženému ke kontejneru. Uvolnění zapůjčení umožňuje jinému klientovi získat zapůjčení kontejneru okamžitě po dokončení vydání.
Zapůjčení můžete uvolnit pomocí jedné z následujících metod v instanci BlobLeaseClient :
Následující příklad uvolní zapůjčení kontejneru:
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();
}
Přerušení zapůjčení
Pokud má kontejner aktivní zapůjčení, můžete přerušit zapůjčení kontejneru. Jakákoli autorizovaná žádost může přerušit zapůjčení; požadavek není nutný k zadání odpovídajícího ID zapůjčení. Zapůjčení nejde obnovit, jakmile se přeruší, a přerušení zapůjčení zabrání získání nového zapůjčení po určitou dobu, dokud nevyprší platnost původního zapůjčení nebo se uvolní.
Zapůjčení můžete přerušit pomocí jedné z následujících metod v instanci BlobLeaseClient :
Následující příklad přeruší zapůjčení kontejneru:
public static async Task BreakContainerLeaseAsync(
BlobContainerClient containerClient)
{
// Get a BlobLeaseClient object to work with a container lease
BlobLeaseClient leaseClient = containerClient.GetBlobLeaseClient();
await leaseClient.BreakAsync();
}
Stavy a akce zapůjčení
Následující diagram znázorňuje pět stavů zapůjčení a příkazy nebo události, které způsobují změny stavu zapůjčení.
Následující tabulka uvádí pět stavů zapůjčení, uvádí stručný popis jednotlivých stavů a uvádí akce zapůjčení povolené v daném stavu. Tyto akce zapůjčení způsobují přechody stavu, jak je znázorněno v diagramu.
Stav zapůjčení | Popis | Povolené akce zapůjčení |
---|---|---|
Dostupný | Zapůjčení je odemknuté a dá se získat. | acquire |
Pronajatý | Zapůjčení je uzamčeno. | acquire (pouze stejné ID zapůjčení), renew , change , release a break |
Platnost vypršela | Doba trvání zapůjčení vypršela. | acquire , renew , release a break |
Lámání | Zapůjčení bylo přerušeno, ale zapůjčení bude nadále uzamčeno, dokud nevypršela doba přerušení. | release a break |
Rozbitý | Zapůjčení bylo přerušeno a doba přerušení vypršela. | acquire , release a break |
Po vypršení zapůjčení bude ID zapůjčení udržováno službou Blob Service, dokud se kontejner znovu nezmění nebo zapůjčí. Klient se může pokusit obnovit nebo uvolnit zapůjčení pomocí ID zapůjčení, jehož platnost vypršela. Pokud požadavek selže, klient ví, že byl kontejner znovu zapůjčen, nebo se kontejner odstranil od poslední aktivní zapůjčení.
Pokud vyprší platnost zapůjčení místo explicitního uvolnění, klient může muset počkat až jednu minutu, než bude možné pro kontejner získat nové zapůjčení. Klient však může zapůjčení obnovit okamžitě s ID zapůjčení, jehož platnost vypršela.
Zdroje informací
Další informace o správě zapůjčení kontejnerů pomocí klientské knihovny Azure Blob Storage pro .NET najdete v následujících zdrojích informací.
Ukázky kódu
Operace rozhraní REST API
Sada Azure SDK pro .NET obsahuje knihovny, které jsou postavené na rozhraní Azure REST API a umožňují interakci s operacemi rozhraní REST API prostřednictvím známých paradigmat .NET. Metody klientské knihovny pro správu zapůjčení kontejnerů používají následující operaci rozhraní REST API:
Prostředky klientské knihovny
Viz také
Související obsah
- Tento článek je součástí příručky pro vývojáře služby Blob Storage pro .NET. Další informace najdete v úplném seznamu článků příručky pro vývojáře na webu Sestavení aplikace .NET.