Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule pokazano, jak tworzyć dzierżawy kontenerów i zarządzać nimi przy użyciu biblioteki klienta usługi Azure Storage dla platformy .NET. Bibliotekę klienta można używać do uzyskiwania, odnawiania, wydawania i przerywania dzierżaw kontenerów.
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz jedną bezpłatnie
- Konto usługi Azure Storage — tworzenie konta magazynowego
- Najnowszy zestaw .NET SDK dla systemu operacyjnego. Pamiętaj, aby pobrać zestaw SDK, a nie środowisko uruchomieniowe.
Konfigurowanie środowiska
Jeśli nie masz istniejącego projektu, w tej sekcji pokazano, jak skonfigurować projekt do pracy z biblioteką klienta usługi Azure Blob Storage dla platformy .NET. Kroki obejmują instalację pakietu, dodawanie using dyrektyw i tworzenie autoryzowanego obiektu klienta. Aby uzyskać szczegółowe informacje, zobacz Rozpoczynanie pracy z usługami Azure Blob Storage i .NET.
Instalowanie pakietów
Z katalogu projektu zainstaluj pakiety dla bibliotek klienta Azure Blob Storage i Azure Identity przy użyciu polecenia dotnet add package. Pakiet Azure.Identity jest wymagany w przypadku połączeń bez hasła z usługami platformy Azure.
dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity
Dodaj using dyrektywy
Dodaj te using dyrektywy na początku pliku kodu:
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
Niektóre przykłady kodu w tym artykule mogą wymagać dodatkowych using dyrektyw.
Tworzenie obiektu klienta
Aby połączyć aplikację z usługą Blob Storage, utwórz wystąpienie BlobServiceClient. W poniższym przykładzie pokazano, jak utworzyć obiekt klienta przy użyciu DefaultAzureCredential autoryzacji:
public BlobServiceClient GetBlobServiceClient(string accountName)
{
BlobServiceClient client = new(
new Uri($"https://{accountName}.blob.core.windows.net"),
new DefaultAzureCredential());
return client;
}
Możesz zarejestrować klienta usługi na potrzeby iniekcji zależności w aplikacji .NET.
Można również tworzyć obiekty klienta dla określonych kontenerów lub obiektów blob. Aby dowiedzieć się więcej na temat tworzenia obiektów klienta i zarządzania nimi, zobacz Tworzenie obiektów klienta korzystających z zasobów danych i zarządzanie nimi.
Autoryzacja
Mechanizm autoryzacji musi mieć niezbędne uprawnienia do pracy z dzierżawą kontenera. Aby uzyskać autoryzację przy użyciu identyfikatora Entra firmy Microsoft (zalecane), potrzebujesz wbudowanej roli Storage Blob Data Contributor platformy Azure RBAC lub wyższej. Aby dowiedzieć się więcej, zobacz wskazówki dotyczące autoryzacji dla kontenera dzierżawy (interfejs API REST).
Informacje o dzierżawach kontenerów
Dzierżawa ustanawia blokadę w kontenerze i zarządza nią na potrzeby operacji usuwania. Czas trwania blokady może wynosić od 15 do 60 sekund lub może być nieskończony. Dzierżawa kontenera zapewnia wyłączny dostęp do kontenera. Dzierżawa kontenera kontroluje tylko możliwość usunięcia kontenera przy użyciu operacji Usuń interfejs API REST kontenera . Aby usunąć kontener z aktywną dzierżawą, klient musi uwzględnić aktywny identyfikator dzierżawy z żądaniem usunięcia. Wszystkie inne operacje kontenera kończą się powodzeniem dla dzierżawionego kontenera bez identyfikatora dzierżawy. Jeśli włączono miękkie usuwanie kontenera, możesz przywrócić usunięte kontenery.
Aby dowiedzieć się więcej na temat stanów dzierżawy i tego, kiedy można wykonać daną akcję w dzierżawie, zobacz Dzierżawa stanów i akcji.
Operacje dzierżawy są obsługiwane przez klasę BlobLeaseClient , która udostępnia klienta zawierającego wszystkie operacje dzierżawy dla obiektów blob i kontenerów. Aby dowiedzieć się więcej o dzierżawach obiektów blob przy użyciu biblioteki klienta, zobacz Tworzenie dzierżaw obiektów blob i zarządzanie nimi za pomocą platformy .NET.
Uzyskiwanie dzierżawy
Po nabyciu dzierżawy kontenera otrzymujesz identyfikator dzierżawy, którego kod może użyć do operowania na kontenerze. Jeśli kontener ma już aktywną dzierżawę, możesz zażądać tylko nowej dzierżawy przy użyciu aktywnego identyfikatora dzierżawy. Można jednak określić nowy czas trwania dzierżawy.
Aby uzyskać dzierżawę, utwórz wystąpienie klasy BlobLeaseClient, a następnie użyj jednej z następujących metod:
Przykład poniżej pokazuje, jak uzyskać 30-sekundowe wypożyczenie kontenera.
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;
}
Odnawianie dzierżawy
Dzierżawę kontenera można odnowić, jeśli identyfikator dzierżawy określony w żądaniu jest zgodny z identyfikatorem dzierżawy skojarzonym z kontenerem. Dzierżawę można odnowić, nawet jeśli wygasła, o ile kontener nie został ponownie wydzierżawiony od czasu wygaśnięcia tej dzierżawy. Po odnowieniu dzierżawy, czas trwania dzierżawy jest resetowany.
Aby odnowić dzierżawę, użyj jednej z następujących metod na instancji BlobLeaseClient:
Poniższy przykład odnawia dzierżawę kontenera:
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();
}
Zwalnianie dzierżawy
Dzierżawę kontenera można zwolnić, jeśli identyfikator dzierżawy określony w żądaniu jest zgodny z identyfikatorem dzierżawy skojarzonym z kontenerem. Uwolnienie dzierżawy umożliwia innemu klientowi natychmiastowe przejęcie dzierżawy kontenera po zakończeniu jej uwolnienia.
Dzierżawę można zwolnić przy użyciu jednej z następujących metod w wystąpieniu obiektu BlobLeaseClient :
Poniższy przykład zwalnia dzierżawę z kontenera:
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();
}
Przerywanie dzierżawy
Dzierżawę kontenera można przerwać, jeśli kontener ma aktywną dzierżawę. Każde autoryzowane żądanie może przerwać dzierżawę; nie jest wymagane, aby żądanie określało pasujący identyfikator dzierżawy. Nie można odnowić dzierżawy po jej uszkodzeniu, a przerwanie dzierżawy uniemożliwia uzyskanie nowej dzierżawy przez pewien czas do momentu wygaśnięcia lub zwolnienia oryginalnej dzierżawy.
dzierżawę można przerwać przy użyciu jednej z następujących metod na instancji obiektu BlobLeaseClient :
Poniższy przykład powoduje przerwanie dzierżawy na kontener.
public static async Task BreakContainerLeaseAsync(
BlobContainerClient containerClient)
{
// Get a BlobLeaseClient object to work with a container lease
BlobLeaseClient leaseClient = containerClient.GetBlobLeaseClient();
await leaseClient.BreakAsync();
}
Stany dzierżawy i czynności
Na poniższym diagramie przedstawiono pięć stanów dzierżawy oraz polecenia lub zdarzenia, które powodują zmiany stanu dzierżawy.
W poniższej tabeli wymieniono pięć stanów dzierżawy, podano krótki opis każdego z nich i wymieniono akcje dzierżawy dozwolone w danym stanie. Te akcje dzierżawy powodują przejścia stanu, jak pokazano na diagramie.
| Stan dzierżawy | opis | Dozwolone czynności dzierżawy |
|---|---|---|
| Dostępny | Dzierżawa jest odblokowana i można ją nabyć. | acquire |
| Wydzierżawiony | Dzierżawa jest zablokowana. |
acquire (tylko ten sam identyfikator dzierżawy), renew, change, releasei break |
| Wygasła | Czas trwania dzierżawy wygasł. |
acquire, renew, releasei break |
| Łamanie | Dzierżawa została przerwana, ale dzierżawa będzie nadal blokowana do czasu wygaśnięcia okresu przerwania. |
release i break |
| Złamane | Dzierżawa została przerwana, a okres przerwania wygasł. |
acquire, release i break |
Po wygaśnięciu dzierżawy identyfikator dzierżawy jest utrzymywany przez usługę Blob Service do momentu ponownego zmodyfikowania lub ponownego dzierżawy kontenera. Klient może próbować odnowić lub zwolnić dzierżawę przy użyciu wygasłego identyfikatora dzierżawy. Jeśli żądanie zakończy się niepowodzeniem, klient wie, że kontener został ponownie wydzierżawiony lub kontener został usunięty od czasu ostatniego aktywnego działania dzierżawy.
Jeśli dzierżawa wygaśnie, a nie zostanie jawnie zwolniona, może być konieczne odczekenie do jednej minuty przed uzyskaniem nowej dzierżawy dla kontenera. Klient może jednak natychmiast odnowić dzierżawę z wygasłym identyfikatorem dzierżawy.
Zasoby
Aby dowiedzieć się więcej na temat zarządzania dzierżawami kontenerów przy użyciu biblioteki klienta usługi Azure Blob Storage dla platformy .NET, zobacz następujące zasoby.
Przykłady kodu
Operacje interfejsu API REST
Zestaw Azure SDK dla platformy .NET zawiera biblioteki, które są oparte na interfejsie API REST platformy Azure, co umożliwia interakcję z operacjami interfejsu API REST za pomocą znanych paradygmatów platformy .NET. Metody biblioteki klienta do zarządzania dzierżawami kontenerów używają następującej operacji interfejsu API REST:
Zasoby biblioteki klienta
Zobacz też
Powiązana zawartość
- Ten artykuł jest częścią przewodnika dla deweloperów usługi Blob Storage dla platformy .NET. Aby dowiedzieć się więcej, zobacz pełną listę artykułów z przewodnika dla deweloperów w temacie Tworzenie aplikacji platformy .NET.