Skapa och hantera containerlån med .NET
Den här artikeln visar hur du skapar och hanterar containerlån med hjälp av Azure Storage-klientbiblioteket för .NET. Du kan använda klientbiblioteket för att hämta, förnya, frigöra och bryta containerlån.
Förutsättningar
- Azure-prenumeration – skapa en kostnadsfritt
- Azure Storage-konto – skapa ett lagringskonto
- Senaste .NET SDK för operativsystemet. Se till att hämta SDK:et och inte körningen.
Konfigurera din miljö
Om du inte har ett befintligt projekt visar det här avsnittet hur du konfigurerar ett projekt för att arbeta med Azure Blob Storage-klientbiblioteket för .NET. Stegen omfattar paketinstallation, tillägg av using
direktiv och skapande av ett auktoriserat klientobjekt. Mer information finns i Kom igång med Azure Blob Storage och .NET.
Installera paket
Från projektkatalogen installerar du paket för Azure Blob Storage- och Azure Identity-klientbiblioteken med hjälp av dotnet add package
kommandot . Azure.Identity-paketet behövs för lösenordslösa anslutningar till Azure-tjänster.
dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity
Lägga till using
direktiv
Lägg till dessa using
direktiv överst i kodfilen:
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
Vissa kodexempel i den här artikeln kan kräva ytterligare using
direktiv.
Skapa ett klientobjekt
Om du vill ansluta en app till Blob Storage skapar du en instans av BlobServiceClient. I följande exempel visas hur du skapar ett klientobjekt med hjälp av DefaultAzureCredential
för auktorisering:
public BlobServiceClient GetBlobServiceClient(string accountName)
{
BlobServiceClient client = new(
new Uri($"https://{accountName}.blob.core.windows.net"),
new DefaultAzureCredential());
return client;
}
Du kan registrera en tjänstklient för beroendeinmatning i en .NET-app.
Du kan också skapa klientobjekt för specifika containrar eller blobar. Mer information om hur du skapar och hanterar klientobjekt finns i Skapa och hantera klientobjekt som interagerar med dataresurser.
Auktorisering
Auktoriseringsmekanismen måste ha de behörigheter som krävs för att fungera med ett containerlån. För auktorisering med Microsoft Entra-ID (rekommenderas) behöver du den inbyggda rollen Storage Blob Data Contributor eller senare. Mer information finns i auktoriseringsvägledningen för Lease Container (REST API).
Om containerlån
Ett lån upprättar och hanterar ett lås på en container för borttagningsåtgärder. Låsvaraktigheten kan vara mellan 15 och 60 sekunder, eller så kan den vara oändlig. Ett lån på en container ger exklusiv borttagningsåtkomst till containern. Ett containerlån styr bara möjligheten att ta bort containern med hjälp av REST API-åtgärden Ta bort container . Om du vill ta bort en container med ett aktivt lån måste en klient inkludera det aktiva låne-ID:t med borttagningsbegäran. Alla andra containeråtgärder lyckas på en hyrd container utan låne-ID. Om du har aktiverat mjuk borttagning av containrar kan du återställa borttagna containrar.
Mer information om lånetillstånd och när du kan utföra en viss åtgärd på ett lån finns i Lånetillstånd och åtgärder.
Låneåtgärder hanteras av klassen BlobLeaseClient , som tillhandahåller en klient som innehåller alla låneåtgärder för blobar och containrar. Mer information om bloblån med hjälp av klientbiblioteket finns i Skapa och hantera bloblån med .NET.
Skaffa ett lån
När du skaffar ett containerlån får du ett låne-ID som koden kan använda för att arbeta med containern. Om containern redan har ett aktivt lån kan du bara begära ett nytt lån med hjälp av det aktiva låne-ID:t. Du kan dock ange en ny lånetid.
Om du vill skaffa ett lån skapar du en instans av klassen BlobLeaseClient och använder sedan någon av följande metoder:
I följande exempel hämtas ett lån på 30 sekunder för en container:
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;
}
Förnya ett lån
Du kan förnya ett containerlån om låne-ID:t som anges i begäran matchar det låne-ID som är associerat med containern. Lånet kan förnyas även om det har upphört att gälla, så länge containern inte har hyrts igen sedan lånet upphörde. När du förnyar ett lån återställs lånets varaktighet.
Om du vill förnya ett lån använder du någon av följande metoder på en BlobLeaseClient-instans :
I följande exempel förnyas ett containerlån:
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();
}
Frigöra ett lån
Du kan frigöra ett containerlån om låne-ID:t som anges i begäran matchar låne-ID:t som är associerat med containern. Om du släpper ett lån kan en annan klient skaffa ett lån för containern omedelbart efter att versionen har slutförts.
Du kan frigöra ett lån med någon av följande metoder på en BlobLeaseClient-instans :
I följande exempel släpps ett lån på en container:
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();
}
Bryta ett lån
Du kan bryta ett containerlån om containern har ett aktivt lån. Alla auktoriserade begäranden kan bryta lånet. begäran krävs inte för att ange ett matchande låne-ID. Ett lån kan inte förnyas efter att det har brutits, och om du bryter ett lån förhindras ett nytt lån från att förvärvas under en tidsperiod tills det ursprungliga lånet upphör att gälla eller frisläpps.
Du kan bryta ett lån med någon av följande metoder på en BlobLeaseClient-instans :
I följande exempel bryts ett lån för en container:
public static async Task BreakContainerLeaseAsync(
BlobContainerClient containerClient)
{
// Get a BlobLeaseClient object to work with a container lease
BlobLeaseClient leaseClient = containerClient.GetBlobLeaseClient();
await leaseClient.BreakAsync();
}
Lånetillstånd och åtgärder
Följande diagram visar de fem tillstånden för ett lån och de kommandon eller händelser som orsakar ändringar i lånetillståndet.
I följande tabell visas de fem lånetillstånden, en kort beskrivning av var och en och en av de låneåtgärder som tillåts i ett visst tillstånd. Dessa låneåtgärder orsakar tillståndsövergångar, som visas i diagrammet.
Lånetillstånd | beskrivning | Låneåtgärder tillåts |
---|---|---|
Tillgängligt | Lånet är olåst och kan förvärvas. | acquire |
Leasade | Lånet är låst. | acquire (endast samma låne-ID), renew , change , release och break |
Upphört | Lånetiden har upphört att gälla. | acquire , renew , release och break |
Brott | Lånet har brutits, men lånet fortsätter att vara låst tills brytperioden har upphört att gälla. | release och break |
Bruten | Lånet har brutits och brytperioden har upphört att gälla. | acquire , release och break |
När ett lån upphör att gälla underhålls låne-ID:t av Blob-tjänsten tills containern ändras eller leasas igen. En klient kan försöka förnya eller frigöra lånet med det utgångna låne-ID:t. Om begäran misslyckas vet klienten att containern hyrdes igen eller att containern togs bort sedan lånet senast var aktivt.
Om ett lån upphör att gälla i stället för att uttryckligen frisläppas kan en klient behöva vänta upp till en minut innan ett nytt lån kan förvärvas för containern. Klienten kan dock förnya lånet med det utgångna låne-ID:t omedelbart.
Resurser
Mer information om hur du hanterar containerlån med hjälp av Azure Blob Storage-klientbiblioteket för .NET finns i följande resurser.
Kodexempel
REST API-åtgärder
Azure SDK för .NET innehåller bibliotek som bygger på Azure REST API, så att du kan interagera med REST API-åtgärder via välbekanta .NET-paradigm. Klientbiblioteksmetoderna för hantering av containerlån använder följande REST API-åtgärd:
Klientbiblioteksresurser
Se även
Relaterat innehåll
- Den här artikeln är en del av utvecklarguiden för Blob Storage för .NET. Mer information finns i den fullständiga listan över utvecklarguideartiklar i Skapa din .NET-app.