Sdílet prostřednictvím


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

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řidejte using direktivy

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 pomocí DefaultAzureCredential vytvořit objekt klienta pro autorizaci:

public BlobServiceClient GetBlobServiceClient(string accountName)
{
    BlobServiceClient client = new(
        new Uri($"https://{accountName}.blob.core.windows.net"),
        new DefaultAzureCredential());

    return client;
}

Můžete zaregistrovat služebního klienta pro injektování 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í k práci se zapůjčením kontejneru. K autorizaci pomocí Microsoft Entra ID (doporučeno) potřebujete vestavěnou roli Azure RBAC Přispěvatel dat úložiště objektů blob nebo vyšší. Další informace najdete v pokynech k autorizaci pro zapůjčení kontejneru (REST API).

O zapůjčení kontejnerů

Pronájem vytvoří a spravuje zámek na kontejner pro operace odstranění. Doba trvání zámku může být 15 až 60 sekund nebo může být nekonečná. Nájem na kontejner poskytuje výhradní právo na odstranění kontejneru. Zapůjčení kontejneru řídí pouze možnost odstranění kontejneru pomocí operace API rozhraní REST Odstranit kontejner. 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 s kontejnerem jsou úspěšné u pronajatého kontejneru bez ID pronájmu. 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 pronájmu jsou manipulovány pomocí třídy BlobLeaseClient, která poskytuje klienta, který obsahuje všechny operace pronájmu pro objekty blob a kontejnery. 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í pronájem, můžete požádat pouze o nový pronájem pomocí ID aktivního pronájmu. Můžete ale zadat novou dobu zapůjčení.

Pokud chcete získat pronájem, 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í nájmu

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í pronájmu umožňuje jinému klientovi získat pronájem kontejneru okamžitě po dokončení uvolnění.

Pronájem můžete uvolnit pomocí jedné z následujících metod na 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 zruší nájemní smlouvu na kontejner:

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í.

Diagram znázorňující stavy zapůjčení kontejneru a triggery změn stavu

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 pronájmu způsobují přechody stavů, jak je znázorněno v diagramu.

Stav zapůjčení Popis Povolené akce pronájmu
Dostupný Pronájem je odemknutý a může být získán. acquire
Pronajatý Nájemní smlouva je uzamčena. acquire (pouze stejné ID zapůjčení), renew, change, releasea break
Platnost vypršela Doba trvání zapůjčení vypršela. acquire, renew, release a break
Aktuální 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, releasea break

Po vypršení pronájmu bude ID pronájmu udržováno službou Blob, dokud se kontejner znovu nezmění nebo nepronajme. 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 byl kontejner odstraněn od poslední aktivní doby 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é

  • 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.