Skapa och hantera bloblån med Java

Den här artikeln visar hur du skapar och hanterar blobavtal med hjälp av Azure Storage-klientbiblioteket för Java. Du kan använda biblioteket för klienter för att hämta, förnya, frigöra och avsluta bloblån.

Förutsättningar

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 Java. Mer information finns i Kom igång med Azure Blob Storage och Java.

Följ de här stegen för att konfigurera projektet om du vill arbeta med kodexemplen i den här artikeln.

Anteckning

Den här artikeln använder verktyget Maven-kompilering för att skapa och köra exempelkoden. Andra byggverktyg, till exempel Gradle, fungerar också med Azure SDK för Java.

Installera paket

pom.xml Öppna filen i textredigeraren. Installera paketen genom att inkludera BOM-filen eller inkludera ett direkt beroende.

Lägga till importinstruktioner

Lägg till följande import-uttryck:

import com.azure.storage.blob.*;
import com.azure.storage.blob.specialized.*;

Auktorisering

Auktoriseringsmekanismen måste ha de behörigheter som krävs för att fungera med ett bloblån. För auktorisering med Microsoft Entra-ID (rekommenderas) behöver du den inbyggda rollen Storage Blob Data Contributor eller högre. Mer information finns i auktoriseringsguiden för Lease Blob (REST API).

Skapa ett klientobjekt

Om du vill ansluta en app till Blob Storage skapar du en instans av BlobServiceClient.

I följande exempel används BlobServiceClientBuilder för att skapa ett BlobServiceClient objekt med , DefaultAzureCredentialoch visar hur du skapar container- och blobklienter om det behövs:

// 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>");

Mer information om hur du skapar och hanterar klientobjekt finns i Skapa och hantera klientobjekt som interagerar med dataresurser.

Om blobleasingar

Ett leasingavtal skapar och hanterar ett lås på en blob vid skriv- och borttagningsåtgärder. Låsvaraktigheten kan vara mellan 15 och 60 sekunder, eller så kan den vara oändlig. Ett lån på en blob ger exklusiv skriv- och borttagningsåtkomst till bloben. För att skriva till en blob med en aktiv leasing måste en klient inkludera det aktiva leasing-ID:t med skrivbegäran.

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.

Alla containeråtgärder är tillåtna för en container som innehåller blobbar med ett aktivt lease, inklusive Ta bort container. Därför kan en container tas bort även om blobar i den har aktiva lån. Använd åtgärden Lånecontainer för att kontrollera behörigheter för att ta bort en container.

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 containerlån med hjälp av klientbiblioteket finns i Skapa och hantera containerlån med Java.

Skaffa ett lån

När du förvärvar ett blob-leasingavtal får du ett lease-ID som din kod kan använda för att arbeta med blobben. Om blobben redan har ett aktivt lease kan du bara begära ett nytt lease med hjälp av det aktiva lease-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 följande metod:

I följande exempel förvärvas en tidsbegränsad åtkomst på 30 sekunder för en 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;
}

Förnya ett lån

Du kan förnya en blob-leasing om leasing-ID:t som anges i begäran matchar det leasing-ID som är associerat med bloben. Hyresavtalet kan förnyas även om det har löpt ut, så länge som blobben inte har ändrats eller hyrts ut på nytt sedan hyresavtalet löpte ut. När du förnyar ett lån återställs lånets varaktighet.

Om du vill förnya ett befintligt lån använder du följande metod:

I följande exempel förnyas ett lån för en blob:

public void renewBlobLease(BlobLeaseClient leaseClient) {
    leaseClient.renewLease();
}

Frigöra ett hyresavtal

Du kan släppa ett blobhyresavtal om leasing-ID:t som anges i begäran matchar hyresavtals-ID:t som är associerat med bloben. Genom att frigöra ett leasingavtal kan en annan klient omedelbart förvärva ett leasingavtal för bloben efter att frigöringen är slutförd.

Du kan frigöra ett leasingavtal med hjälp av följande metod:

I följande exempel frisläpps leasingen på blobben.

public void releaseBlobLease(BlobLeaseClient leaseClient) {
    leaseClient.releaseLease();
    System.out.println("Release lease operation completed");
}

Bryta ett lån

Du kan bryta ett bloblån om blobben har ett aktivt lån. Alla auktoriserade begäranden kan bryta leasningen; begäran behöver inte specificera ett matchande leasing-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 hyresavtal med hjälp av följande metod:

I det följande exemplet bryts låsningen på en blob:

public void breakBlobLease(BlobLeaseClient leaseClient) {
    leaseClient.breakLease();
}

Hyrestillstå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.

Ett diagram som visar bloblånetillstånd och utlösare för tillståndsändring.

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 Hyresavtalet är utlåst och kan tecknas. acquire
Leasad Lånet är låst. acquire (endast samma låne-ID), renew, change, releaseoch break
Utgått Lånetiden har upphört att gälla. acquire, renew, releaseoch break
Senaste nytt Lånet har brutits, men lånet fortsätter att vara låst tills brytperioden har upphört att gälla. release och break
Trasig Lånet har brutits och brytperioden har upphört att gälla. acquire, release och break

När ett leaseavtal löper ut bibehålls lease-ID:t av Blob-tjänsten tills blobben ändras eller återuthyrs igen. En klient kan försöka förnya eller frigöra lånet med det utgångna låne-ID:t. Om den här åtgärden lyckas vet klienten att blobben inte har ändrats sedan leasing-ID:t senast var giltigt. Om begäran misslyckas vet klienten att blobben har ändrats eller att blobben hyrdes igen sedan lånet senast var aktivt. Klienten måste sedan skaffa ett nytt hyresavtal för blobben.

Om en leasing upphör att gälla i stället för att uttryckligen frisläppas, kan det hända att en klient behöver vänta upp till en minut innan en ny leasing kan erhållas för en BLOB. Kunden kan dock förnya leasingen med sitt leasing-ID omedelbart om bloben inte har ändrats.

Det går inte att bevilja ett leasingavtal för en ögonblicksbild eftersom ögonblicksbilder är skrivskyddade. Att begära ett lån mot en ögonblicksbild resulterar i statuskoden 400 (Bad Request).

Resurser

För att lära dig mer om hur man hanterar blob-leases med Azure Blob Storage-klientbiblioteket för Java, se följande resurser.

Kodexempel

REST API-åtgärder

Azure SDK för Java innehåller bibliotek som bygger på Azure REST API, så att du kan interagera med REST API-åtgärder via välbekanta Java-paradigm. Klientbiblioteksmetoderna för att hantera blob-leaseavtal använder följande REST API-operation:

Klientbiblioteksresurser

Se även

  • Den här artikeln är en del av utvecklarguiden för Blob Storage för Java. Mer information finns i den fullständiga listan över utvecklarguideartiklar i Skapa din Java-app.