Erstellen und Verwalten von Containerleases mit Java
In diesem Artikel wird die Erstellung und Verwaltung von Containerleases unter Verwendung der Azure Storage-Clientbibliothek für Java beschrieben. Sie können mithilfe der Clientbibliothek Containerleases abrufen, verlängern, freigeben und unterbrechen.
Voraussetzungen
- Azure-Abonnement – Erstellen eines kostenlosen Kontos
- Azure Storage-Konto – Erstellen eines Speicherkontos
- Java Development Kit (JDK) Version 8 oder höher (wir empfehlen Version 17 für optimale Benutzererfahrung)
- Für die Projektverwaltung wird in diesem Beispiel Apache Maven verwendet.
Erstellen Ihrer Umgebung
Wenn Sie nicht über ein vorhandenes Projekt verfügen, wird in diesem Abschnitt gezeigt, wie Sie ein Projekt für die Arbeit mit der Azure Blob Storage-Clientbibliothek für Java einrichten. Weitere Informationen finden Sie unter Erste Schritte mit Azure Blob Storage mit Java.
Um die Codebeispiele in diesem Artikel zu verwenden, führen Sie die folgenden Schritte zum Einrichten Ihres Projekts aus.
Hinweis
In diesem Artikel wird das Maven-Buildtool verwendet, um den Beispielcode zu erstellen und auszuführen. Andere Buildtools (beispielsweise Gradle) können ebenfalls mit dem Azure SDK für Java verwendet werden.
Installieren von Paketen
Öffnen Sie die Datei pom.xml
in Ihrem Text-Editor. Installieren Sie die Pakete durch Einbeziehen der BOM-Datei oder Einbeziehen einer direkten Abhängigkeit.
Hinzufügen von Importanweisungen
Fügen Sie die folgenden import
-Anweisungen ein:
import com.azure.storage.blob.*;
import com.azure.storage.blob.specialized.*;
Autorisierung
Der Autorisierungsmechanismus muss über die erforderlichen Berechtigungen zum Arbeiten mit einer Containerlease verfügen. Für die Autorisierung mit Microsoft Entra ID (empfohlen) benötigen Sie mindestens die integrierte Azure RBAC-Rolle Mitwirkender an Storage-Blobdaten. Weitere Informationen finden Sie im Autorisierungsleitfaden für Create Container (REST-API).
Erstellen eines Clientobjekts
Um eine App mit Blob Storage zu verbinden, erstellen Sie eine Instanz von BlobServiceClient.
Im folgenden Beispiel wird BlobServiceClientBuilder verwendet, um ein BlobServiceClient
-Objekt mithilfe von DefaultAzureCredential
zu erstellen, und zeigt, wie Container- und Blob-Clients erstellt werden, falls erforderlich:
// 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>");
Weitere Informationen zum Erstellen und Verwalten von Clientobjekten finden Sie unter Erstellen und Verwalten von Clientobjekten, die mit Datenressourcen interagieren.
Informationen zu Containerleases
Eine Lease richtet für einen Container eine Sperre für Löschvorgänge ein und verwaltet diese. Die Sperrdauer kann 15 bis 60 Sekunden betragen oder unendlich sein. Eine Lease für einen Container bietet exklusiven Löschzugriff auf den Container. Eine Containerlease steuert nur die Möglichkeit zum Löschen des Containers mithilfe des REST-API-Vorgangs Container löschen. Um einen Container mit einer aktiven Lease zu löschen, muss ein Client die ID der aktiven Lease bei der Löschanforderung angeben. Alle anderen Containervorgänge werden für einen geleasten Container auch ohne Angabe der Lease-ID erfolgreich ausgeführt. Wenn Sie das vorläufige Löschen von Containern aktiviert haben, können Sie gelöschte Container wiederherstellen.
Weitere Informationen zu Leasezuständen und zu Situationen, in denen Sie eine bestimmte Aktion für eine Lease ausführen können, finden Sie unter Leasezustände und -aktionen.
Leasevorgänge werden von der BlobLeaseClient-Klasse verarbeitet, die einen Client bereitstellt, in dem alle Leasevorgänge für Blobs und Container enthalten sind. Weitere Informationen zu Blobleases mit der Clientbibliothek finden Sie unter Erstellen und Verwalten von Blobleases mit Java.
Abrufen einer Lease
Wenn Sie eine Containerlease abrufen, erhalten Sie eine Lease-ID, die Sie in Ihrem Code für Vorgänge mit dem Container verwenden können. Wenn der Container bereits über eine aktive Lease verfügt, können Sie nur unter Verwendung der aktiven Lease-ID eine neue Lease anfordern. Sie können jedoch eine neue Leasedauer angeben.
Erstellen Sie zum Abrufen einer Lease eine Instanz der BlobLeaseClient-Klasse, und verwenden Sie dann die folgende Methode:
Im folgenden Beispiel wird eine Lease von 30 Sekunden für einen Container abgerufen:
public BlobLeaseClient acquireContainerLease(BlobContainerClient container) {
// Create the lease client
BlobLeaseClient leaseClient = new BlobLeaseClientBuilder()
.containerClient(container)
.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;
}
Erneuern einer Lease
Sie können eine Containerlease verlängern, wenn die in der Anforderung angegebene Lease-ID mit der dem Container zugeordneten Lease-ID übereinstimmt. Beachten Sie, dass eine Lease selbst nach ihrem Ablauf noch verlängert werden kann, sofern der Container danach noch nicht wieder geleast wurde. Beim Verlängern einer Lease wird die Leasedauer zurückgesetzt.
Verwenden Sie die folgende Methode, um eine vorhandene Lease zu verlängern:
Im folgenden Beispiel wird eine Lease für einen Container erneuert:
public void renewContainerLease(BlobLeaseClient leaseClient) {
leaseClient.renewLease();
}
Freigeben einer Lease
Sie können eine Containerlease freigeben, wenn die in der Anforderung angegebene Lease-ID mit der dem Container zugeordneten Lease-ID übereinstimmt. Durch das Freigeben einer Lease kann ein anderer Client die Lease für den Container sofort nach Abschluss der Freigabe abrufen.
Sie können eine Lease mit der folgenden Methode freigeben:
Im folgenden Beispiel wird die Lease für einen Container freigegeben:
public void releaseContainerLease(BlobLeaseClient leaseClient) {
leaseClient.releaseLease();
System.out.println("Release lease operation completed");
}
Aufheben einer Lease
Sie können eine Containerlease unterbrechen, sofern der Container über eine aktive Lease verfügt. Die Lease kann mit jeder autorisierten Anforderung unterbrochen werden. In der Anforderung muss keine übereinstimmende Lease-ID angegeben werden. Nach einer Unterbrechung kann die Lease nicht verlängert werden. Außerdem verhindert das Unterbrechen einer Lease, dass für einen bestimmten Zeitraum eine neue Lease erworben werden kann, bis die ursprüngliche Lease abläuft oder freigegeben wird.
Sie können eine Lease mit der folgenden Methode aufheben:
Im folgenden Beispiel wird die Lease für einen Container aufgehoben:
public void breakContainerLease(BlobLeaseClient leaseClient) {
leaseClient.breakLease();
}
Leasezustände und -aktionen
Im folgenden Diagramm werden die fünf Statusangaben einer Lease sowie die Befehle oder Ereignisse gezeigt, die Leasestatusänderungen verursachen.
In der folgenden Tabelle sind die fünf Leasezustände mit einer Kurzbeschreibung sowie die Leaseaktionen aufgeführt, die bei einem bestimmten Zustand zulässig sind. Diese Leaseaktionen verursachen Statusübergänge, wie im Diagramm dargestellt.
Leasezustand | BESCHREIBUNG | Zulässige Leaseaktionen |
---|---|---|
Verfügbar | Die Lease wird entsperrt und kann abgerufen werden. | acquire |
Geleast | Die Lease wird gesperrt. | acquire (nur dieselbe Lease-ID), renew , change , release und break |
Abgelaufen | Die Leasedauer ist abgelaufen. | acquire , renew , release und break |
Breaking | Die Lease wurde unterbrochen, ist aber weiterhin gesperrt, bis der Unterbrechungszeitraum abgelaufen ist. | release und break |
Beschädigt | Die Lease wurde unterbrochen, und der Unterbrechungszeitraum ist abgelaufen. | acquire , release und break |
Nachdem eine Lease abgelaufen ist, wird die Lease-ID vom Blob-Dienst beibehalten, bis der Container geändert oder erneut geleast wird. Ein Client kann versuchen, die Lease mithilfe der abgelaufenen Lease-ID zu verlängern oder freizugeben. Wenn die Anforderung nicht erfolgreich ist, weiß der Client, dass der Container erneut geleast oder seit der letzten Aktivierung der Lease gelöscht wurde.
Wenn eine Lease abläuft und nicht explizit freigegeben wird, muss der Client u. U. bis zu einer Minute warten, bevor eine neue Lease für den Container abgerufen werden kann. Der Client kann jedoch die Lease mit der abgelaufenen Lease-ID sofort verlängern.
Ressourcen
Weitere Informationen zum Leasen eines Containers mithilfe der Azure Blob Storage-Clientbibliothek für Java finden Sie in den folgenden Ressourcen.
Codebeispiele
REST-API-Vorgänge
Das SDK für Java enthält Bibliotheken, die auf der zugrunde liegenden Azure-REST-API basieren, und ermöglicht Ihnen dadurch die Interaktion mit REST-API-Vorgängen über vertraute Java-Paradigmen. Die Methoden der Clientbibliothek zum Leasen eines Containers verwenden den folgenden REST-API-Vorgang:
- Container leasen (REST API)
Ressourcen zur Clientbibliothek
Siehe auch
Zugehöriger Inhalt
- Dieser Artikel ist Teil des Blob Storage-Entwicklerleitfadens für Java. Weitere Informationen finden Sie in der vollständigen Liste der Entwicklerleitfadenartikel unter Erstellen Ihrer Java-App.