Sdílet prostřednictvím


Vytváření a správa blobových pronájmů pomocí Javy

Tento článek ukazuje, jak vytvořit a spravovat zapůjčení objektů blob pomocí klientské knihovny Azure Storage pro Javu. Klientskou knihovnu můžete použít k získání, obnovení, uvolnění a přerušení zapůjčení objektů blob.

Prerequisites

Nastavení prostředí

Pokud nemáte existující projekt, v této části se dozvíte, jak nastavit projekt pro práci s klientskou knihovnou Azure Blob Storage pro Javu. Další informace najdete v tématu Začínáme se službou Azure Blob Storage a Javou.

Pokud chcete pracovat s příklady kódu v tomto článku, nastavte projekt pomocí následujícího postupu.

Note

Tento článek používá nástroj pro sestavení Maven k sestavení a spuštění ukázkového kódu. Další nástroje sestavení, jako je Gradle, také pracují se sadou Azure SDK pro Javu.

Instalace balíčků

Otevřete soubor v textovém pom.xml editoru. Nainstalujte balíčky zahrnutím souboru BOM nebo zahrnutím přímé závislosti.

Přidejte příkazy importu

Přidejte následující import příkazy:

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

Authorization

Autorizační mechanismus musí mít potřebná oprávnění pro práci s pronájmem objektu blob. K autorizaci pomocí Microsoft Entra ID (doporučeno) potřebujete předdefinovanou roli Azure RBAC Storage Blob Data Contributor nebo vyšší. Další informace najdete v pokynech k autorizaci pro zapůjčení objektu blob (REST API).

Vytvoření objektu klienta

Pokud chcete připojit aplikaci ke službě Blob Storage, vytvořte instanci BlobServiceClient.

Následující příklad používá BlobServiceClientBuilder k sestavení BlobServiceClient objektu pomocí DefaultAzureCredentiala ukazuje, jak vytvořit kontejner a klienty objektů blob v případě potřeby:

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

Další informace o vytváření a správě klientských objektů najdete v tématu Vytváření a správa klientských objektů, které pracují s datovými prostředky.

O pronájmech blobů

Pronájem vytvoří a spravuje zámek na blobu pro operace zápisu a odstranění. Doba trvání zámku může být 15 až 60 sekund nebo může být nekonečná. Pronájem objektu blob poskytuje výhradní přístup k jeho zápisu a odstranění. Pokud chcete zapisovat do objektu blob s aktivním zapůjčením, musí klient do žádosti o zápis zahrnout aktivní ID zapůjčení.

Další informace o stavech zapůjčení a o tom, kdy můžete provést danou akci u zapůjčení, najdete v tématu Stavy zapůjčení a akce.

Všechny operace s kontejnery jsou povoleny u kontejneru, který zahrnuje bloby s aktivním pronájmem, včetně odstranění kontejneru. Kontejner může být odstraněn i v případě, že objekty blob v něm mají aktivní pronájem. Pomocí operace Zapůjčení kontejneru můžete řídit práva k odstranění kontejneru.

Operace pronájmu jsou manipulovány pomocí třídy BlobLeaseClient, která poskytuje klienta, který obsahuje všechny operace pronájmu pro objekty blob a kontejnery. Další informace o zapůjčení kontejnerů pomocí klientské knihovny najdete v tématu Vytváření a správa zapůjčení kontejnerů pomocí Javy.

Získání zapůjčení

Když získáte pronájem objektu blob, získáte ID pronájmu, které váš kód může použít k práci s objektem blob. Pokud objekt blob již má aktivní pronájem, můžete požádat pouze o nový pronájem pomocí ID aktivního pronájmu. Můžete ale zadat novou dobu zapůjčení.

Chcete-li získat pronájem, vytvořte instanci třídy BlobLeaseClient a poté použijte následující metodu:

Následující příklad získá 30sekundový pronájem k objektu 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;
}

Prodloužení zapůjčení

Pokud ID pronájmu zadané v požadavku odpovídá ID pronájmu přidruženému k objektu blob, můžete prodloužit pronájem tohoto objektu blob. Zapůjčení lze obnovit i po jeho vypršení, pokud nebyl objekt blob od vypršení doby zapůjčení změněn nebo znovu zapůjčen. Když prodloužíte zapůjčení, doba trvání zapůjčení se resetuje.

Pokud chcete obnovit stávající zapůjčení, použijte následující metodu:

Následující příklad obnoví pronájem objektu blob:

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

Uvolnění nájmu

Pronájem objektu blob můžete uvolnit, pokud ID pronájmu zadané v požadavku odpovídá ID pronájmu spojenému s objektem blob. Uvolnění pronájmu umožňuje jinému klientovi získat pronájem objektu blob okamžitě poté, co je uvolnění dokončeno.

Pronájem můžete uvolnit pomocí následující metody:

Následující příklad uvolní zábor objektu blob:

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

Přerušení zapůjčení

Pokud má objekt blob aktivní pronájem, můžete tento pronájem přerušit. Jakákoli autorizovaná žádost může přerušit zapůjčení; požadavek není nutný k zadání odpovídajícího ID zapůjčení. Zapůjčení nejde obnovit, jakmile se přeruší, a přerušení zapůjčení zabrání získání nového zapůjčení po určitou dobu, dokud nevyprší platnost původního zapůjčení nebo se uvolní.

Zapůjčení můžete přerušit pomocí následující metody:

Následující příklad uvolní uzamčení objektu blob:

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

Stavy a akce zapůjčení

Následující diagram znázorňuje pět stavů zapůjčení a příkazy nebo události, které způsobují změny stavu zapůjčení.

Diagram znázorňující stavy zapůjčení objektů blob a triggery změn stavu

Následující tabulka uvádí pět stavů zapůjčení, uvádí stručný popis jednotlivých stavů a uvádí akce zapůjčení povolené v daném stavu. Tyto akce pronájmu způsobují přechody stavů, jak je znázorněno v diagramu.

Stav zapůjčení Description Povolené akce pronájmu
Available Pronájem je odemknutý a může být získán. acquire
Leased Nájemní smlouva je uzamčena. acquire (pouze stejné ID zapůjčení), renew, change, releasea break
Expired Doba trvání zapůjčení vypršela. acquire, renew, release a break
Breaking Zapůjčení bylo přerušeno, ale zapůjčení bude nadále uzamčeno, dokud nevypršela doba přerušení. release a break
Broken Zapůjčení bylo přerušeno a doba přerušení vypršela. acquire, release a break

Po vypršení pronájmu je ID pronájmu udržováno službou Blob, dokud se objekt blob znovu nezmění nebo nepronajme. Klient se může pokusit obnovit nebo uvolnit zapůjčení pomocí ID zapůjčení, jehož platnost vypršela. Pokud je tato operace úspěšná, klient ví, že se objekt blob nezměnil od doby, kdy bylo ID pronájmu naposledy platné. Pokud požadavek selže, klient ví, že se datový objekt změnil, nebo že byl datový objekt znovu zapůjčen od chvíle, kdy byl naposledy aktivní. Klient pak musí získat nový pronájem pro objekt blob.

Pokud vyprší platnost leasingu namísto jeho explicitního uvolnění, klient může muset počkat až jednu minutu, než lze pro blob získat novou leasingovou smlouvu. Klient však může okamžitě obnovit výpůjčku pomocí ID výpůjčky, pokud nebyl blob změněn.

Zapůjčení nejde udělit pro snímek objektu blob, protože snímky jsou jen pro čtení. Žádost o pronájem na základě snímku vede k stavovému kódu 400 (Bad Request).

Resources

Další informace o správě zapůjčení objektů blob pomocí klientské knihovny azure Blob Storage pro Javu najdete v následujících zdrojích informací.

Ukázky kódu

Operace rozhraní REST API

Sada Azure SDK pro Javu obsahuje knihovny, které jsou postavené na rozhraní Azure REST API a umožňují interakci s operacemi rozhraní REST API prostřednictvím známých paradigmat Javy. Metody klientské knihovny pro správu zapůjčení objektů blob používají následující operaci rozhraní REST API:

Prostředky klientské knihovny

Viz také

  • Tento článek je součástí příručky pro vývojáře služby Blob Storage pro Javu. Další informace najdete v úplném seznamu článků příručky pro vývojáře na webu Sestavení aplikace v Javě.