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 obiektów blob i zarządzać nimi przy użyciu biblioteki klienta usługi Azure Storage dla języka Java. Bibliotekę klienta można używać do uzyskiwania, odnawiania, wydawania i przerywania dzierżaw obiektów blob.
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz jedną bezpłatnie
- Konto magazynu Azure — utworzyć konto magazynu
- Zestaw Java Development Kit (JDK) w wersji 8 lub nowszej (zalecamy wersję 17, aby uzyskać najlepsze środowisko)
- Narzędzie Apache Maven jest używane do zarządzania projektami w tym przykładzie
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 języka Java. Aby uzyskać więcej informacji, zobacz Rozpoczynanie pracy z usługami Azure Blob Storage i Java.
Aby pracować z przykładami kodu w tym artykule, wykonaj następujące kroki, aby skonfigurować projekt.
Uwaga
W tym artykule użyto narzędzia kompilacji maven do skompilowania i uruchomienia przykładowego kodu. Inne narzędzia kompilacji, takie jak Gradle, współpracują również z zestawem Azure SDK dla języka Java.
Instalowanie pakietów
pom.xml Otwórz plik w edytorze tekstów. Zainstaluj pakiety, dołączając plik BOM lub uwzględniając bezpośrednią zależność.
Dodaj instrukcje importu
Dodaj następujące instrukcje import:
import com.azure.storage.blob.*;
import com.azure.storage.blob.specialized.*;
Autoryzacja
Mechanizm autoryzacji musi mieć niezbędne uprawnienia do pracy z dzierżawą obiektów blob. Aby uzyskać autoryzację przy użyciu Microsoft Entra ID (zalecane), potrzebujesz wbudowanej roli Azure RBAC Storage Blob Data Contributor lub wyższej. Aby dowiedzieć się więcej, zobacz wskazówki dotyczące autoryzacji dla dzierżawy obiektu blob (interfejs API REST).
Tworzenie obiektu klienta
Aby połączyć aplikację z usługą Blob Storage, utwórz wystąpienie BlobServiceClient.
W poniższym przykładzie użyto obiektu BlobServiceClientBuilder do skompilowania BlobServiceClient obiektu przy użyciu metody DefaultAzureCredentiali pokazano, jak utworzyć klientów kontenerów i obiektów blob, w razie potrzeby:
// Azure SDK client builders accept the credential as a parameter
// TODO: Replace <storage-account-name> with your actual storage account name
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
.endpoint("https://<storage-account-name>.blob.core.windows.net/")
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
// If needed, you can create a BlobContainerClient object from the BlobServiceClient
BlobContainerClient containerClient = blobServiceClient
.getBlobContainerClient("<container-name>");
// If needed, you can create a BlobClient object from the BlobContainerClient
BlobClient blobClient = containerClient
.getBlobClient("<blob-name>");
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.
Informacje o dzierżawach obiektów blob
Dzierżawa tworzy i zarządza blokadą obiektu blob w celu umożliwienia operacji zapisu i usuwania. Czas trwania blokady może wynosić od 15 do 60 sekund lub może być nieskończony. Dzierżawa bloba zapewnia wyłączny dostęp do zapisu i usuwania. Aby zapisać w obiekcie blob z aktywną dzierżawą, klient musi uwzględnić aktywny identyfikator dzierżawy z żądaniem zapisu.
Aby dowiedzieć się więcej na temat stanów dzierżawy i tego, kiedy można wykonać daną akcję w dzierżawie, zobacz Stany i działania dzierżawy.
Wszystkie operacje kontenera są dozwolone w kontenerze zawierającym obiekty blob z aktywną dzierżawą, w tym usuwanie kontenera. W związku z tym kontener może zostać usunięty, nawet jeśli bloby w nim mają aktywne dzierżawy. Użyj operacji Dzierżawa kontenera , aby kontrolować prawa do usuwania kontenera.
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 kontenerów przy użyciu biblioteki klienta, zobacz Tworzenie dzierżaw kontenerów i zarządzanie nimi za pomocą języka Java.
Uzyskiwanie dzierżawy
Po uzyskaniu dzierżawy obiektu blob uzyskujesz identyfikator dzierżawy, którego kod może użyć do działania na obiekcie blob. Jeśli obiekt blob ma już aktywną dzierżawę, możesz zażądać nowej dzierżawy tylko 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 następującej metody.
Poniższy przykład uzyskuje 30-sekundową dzierżawę dla blob:
public BlobLeaseClient acquireBlobLease(BlobClient blob) {
// Create the lease client
BlobLeaseClient leaseClient = new BlobLeaseClientBuilder()
.blobClient(blob)
.buildClient();
// Acquire the lease - specify duration between 15 and 60 seconds, or -1 for
// infinite duration
String leaseID = leaseClient.acquireLease(30);
System.out.printf("Acquired lease ID: %s%n", leaseID);
return leaseClient;
}
Odnawianie dzierżawy
Dzierżawę obiektu blob można odnowić, jeśli identyfikator dzierżawy określony w żądaniu jest zgodny z identyfikatorem dzierżawy skojarzonym z obiektem blob. Dzierżawę można odnowić, nawet jeśli wygasła, o ile obiekt blob nie został zmodyfikowany lub dzierżawiony ponownie od czasu wygaśnięcia tej dzierżawy. Po odnowieniu dzierżawy jej czas trwania zostaje zresetowany.
Aby odnowić istniejącą dzierżawę, użyj następującej metody:
Poniższy przykład odnawia dzierżawę obiektu danych typu blob:
public void renewBlobLease(BlobLeaseClient leaseClient) {
leaseClient.renewLease();
}
Zwalnianie dzierżawy
Dzierżawę obiektu blob można zwolnić, jeśli identyfikator dzierżawy określony w żądaniu jest zgodny z identyfikatorem dzierżawy skojarzonym z obiektem blob. Zwolnienie dzierżawy umożliwia innemu klientowi uzyskanie dzierżawy na obiekt blob natychmiast po zakończeniu zwolnienia.
Dzierżawę można zwolnić przy użyciu następującej metody:
Poniższy przykład zwalnia dzierżawę na blobie:
public void releaseBlobLease(BlobLeaseClient leaseClient) {
leaseClient.releaseLease();
System.out.println("Release lease operation completed");
}
Przerywanie dzierżawy
Dzierżawę obiektu blob można przerwać, jeśli obiekt blob ma aktywną dzierżawę. Każde autoryzowane żądanie może przerwać dzierżawę; żądanie nie musi określać zgodnego identyfikatora 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 następującej metody:
W poniższym przykładzie dzierżawa obiektu blob jest przerywana:
public void breakBlobLease(BlobLeaseClient leaseClient) {
leaseClient.breakLease();
}
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ą zdobyć. | acquire |
| Wynajęty | 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, dopóki obiekt blob nie zostanie zmodyfikowany lub dzierżawiony ponownie. Klient może próbować odnowić lub zwolnić dzierżawę przy użyciu wygasłego identyfikatora dzierżawy. Jeśli operacja zakończy się pomyślnie, klient wie, że blob nie został zmieniony od czasu, gdy identyfikator dzierżawy był ostatnio ważny. Jeśli żądanie zakończy się niepowodzeniem, klient wie, że obiekt blob został zmodyfikowany lub obiekt blob został ponownie wydzierżawiony, ponieważ dzierżawa była ostatnio aktywna. Klient musi następnie uzyskać nową dzierżawę obiektu blob.
Jeśli dzierżawa wygaśnie, a nie zostanie jawnie zwolniona, klient może być zmuszony do odczekania do jednej minuty, zanim będzie można uzyskać nową dzierżawę dla bloba. Jednak klient może natychmiast odnowić dzierżawę przy użyciu identyfikatora dzierżawy, jeśli obiekt blob nie został zmodyfikowany.
Nie można udzielić dzierżawy migawki obiektu blob, ponieważ migawki są tylko do odczytu. Żądanie uzyskania dzierżawy z migawki skutkuje kodem stanu 400 (Bad Request).
Zasoby
Aby dowiedzieć się więcej na temat zarządzania dzierżawami obiektów blob przy użyciu biblioteki klienta usługi Azure Blob Storage dla języka Java, zobacz następujące zasoby.
Przykłady kodu
Operacje interfejsu API REST
Zestaw Azure SDK dla języka Java zawiera biblioteki, które bazują na interfejsie API REST platformy Azure, co umożliwia interakcję z operacjami interfejsu API REST za pomocą znanych paradygmatów języka Java. Metody biblioteki klienta do zarządzania dzierżawami obiektów blob 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 języka Java. Aby dowiedzieć się więcej, zobacz pełną listę artykułów z przewodnika dla deweloperów w temacie Tworzenie aplikacji Java.