Sdílet prostřednictvím


Nastavení nebo změna úrovně přístupu objektu blob bloku pomocí Javy

Tento článek ukazuje, jak nastavit nebo změnit úroveň přístupu objektu blob bloku pomocí klientské knihovny služby Azure Storage pro Javu.

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 BOM souboru nebo přímé závislosti.

Přidejte příkazy importu

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

import com.azure.core.util.polling.LongRunningOperationStatus;
import com.azure.core.util.polling.PollResponse;
import com.azure.core.util.polling.SyncPoller;
import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;
import com.azure.storage.blob.options.BlobBeginCopyOptions;

Authorization

Autorizační mechanismus musí mít potřebná oprávnění k nastavení úrovně přístupu objektu blob. K autorizaci pomocí Microsoft Entra ID (doporučeno) potřebujete integrovanou roli Azure RBAC Storage Blob Data Contributor nebo vyšší. Další informace najdete v pokynech k oprávnění pro nastavení úrovně objektů blob.

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.

Informace o úrovních přístupu k objektům blob bloku

Pokud chcete spravovat náklady na potřeby úložiště, může být užitečné uspořádat data na základě toho, jak často se k nim přistupuje a jak dlouho je potřeba uchovávat. Azure Storage nabízí různé úrovně přístupu, takže data objektů blob můžete ukládat nákladově nejefektivnějším způsobem na základě způsobu jejich použití.

Úrovně přístupu k blob datům

Mezi úrovně přístupu ke službě Azure Storage patří:

  • Horká úroveň – online úroveň optimalizovaná pro ukládání dat, ke kterým se přistupuje nebo mění často. Horká úroveň má nejvyšší náklady na úložiště, ale nejnižší náklady na přístup.
  • Chladná vrstva - online vrstva optimalizovaná pro ukládání dat, která jsou zřídka přístupná nebo upravovaná. Data ve studené vrstvě by měla být uložena minimálně po dobu 30 dnů. Studená úroveň má nižší náklady na úložiště a vyšší náklady na přístup v porovnání s horkou úrovní.
  • Studená úroveň – online úroveň optimalizovaná pro ukládání dat, která jsou zřídka přístupná nebo upravená. Data v studené vrstvě by měla být uložena minimálně po dobu 90 dnů. Chladná úroveň má nižší náklady na úložiště a vyšší náklady na přístup v porovnání s úrovní cool.
  • Archivní úroveň – offline úroveň optimalizovaná pro ukládání zřídka používaných dat a s flexibilními požadavky na latenci v řádu hodin. Data v archivní úrovni by měla být uložena minimálně po dobu 180 dnů.

Další informace o úrovních přístupu pro data objektů BLOB najdete v Úrovně přístupu pro data objektů BLOB.

I když je objekt blob v archivní úrovni přístupu, považuje se za offline a nedá se číst ani upravovat. Chcete-li číst nebo upravovat data v archivovaném objektu blob, musíte nejprve rehydratovat objekt blob do online vrstvy. Další informace o rehydrataci blobu z archivní úrovně do online úrovně najdete v tématu Rehydratace blobů z archivní úrovně.

Restrictions

Nastavení úrovně přístupu je umožněno jenom u blokových objektů blob. Další informace o omezeních nastavení úrovně přístupu objektu blob bloku najdete v tématu Nastavení úrovně objektů blob (REST API).

Note

Pokud chcete nastavit úroveň přístupu na Cold používání Javy, musíte použít minimální verzi klientské knihovny 12.21.0.

Nastavte úroveň přístupu objektu blob během nahrávání

Úroveň přístupu objektu blob můžete nastavit při nahrávání pomocí třídy BlobUploadFromFileOptions . Následující příklad kódu ukazuje, jak nastavit úroveň přístupu při nahrávání blobu:

public void uploadBlobWithAccessTier(BlobContainerClient blobContainerClient, Path filePath) {
    String fileName = filePath.getFileName().toString();
    BlobClient blobClient = blobContainerClient.getBlobClient(fileName);

    BlobUploadFromFileOptions options = new BlobUploadFromFileOptions(filePath.toString())
            .setTier(AccessTier.COOL);

    try {
        Response<BlockBlobItem> blockBlob = blobClient.uploadFromFileWithResponse(options, null, null);
    } catch (UncheckedIOException ex) {
        System.err.printf("Failed to upload from file: %s%n", ex.getMessage());
    }
}

Další informace o nahrání objektu blob pomocí Javy najdete v tématu Nahrání objektu blob pomocí Javy.

Změna úrovně přístupu pro existující blokový blob

Úroveň přístupu existujícího objektu blob bloku můžete změnit pomocí jedné z následujících metod:

Následující příklad kódu ukazuje, jak pro existující objekt blob změnit úroveň přístupu na Chladnou.

public void changeBlobAccessTier(BlobClient blobClient) {
    // Change the blob's access tier to cool
    blobClient.setAccessTier(AccessTier.COOL);
}

Pokud rehydratujete archivovaný blob, použijte metodu setAccessTierWithResponse. tier Nastavte parametr na platnou hodnotu AccessTier: HOT, COOL, COLD nebo ARCHIVE. Volitelně můžete parametr nastavit priority na platnou hodnotu HIGH nebo STANDARD.

Následující příklad kódu ukazuje, jak rehydratovat archivovaný objekt blob změnou přístupové vrstvy na Hot.

public void rehydrateBlobSetAccessTier(BlobClient blobClient) {
    // Rehydrate the blob to hot tier using a standard rehydrate priority
    blobClient.setAccessTierWithResponse(
        AccessTier.HOT,
        RehydratePriority.STANDARD,
        null, 
        null, 
        null);
}

Metoda setAccessTierWithResponse může také přijmout parametr BlobSetAccessTierOptions pro určení možností konfigurace.

Kopírovat blob do jiné úrovně přístupu

Úroveň přístupu existujícího objektu blob bloku můžete změnit zadáním úrovně přístupu v rámci operace kopírování. Pokud chcete změnit úroveň přístupu během operace kopírování, použijte třídu BlobBeginCopyOptions .

Metodu setTier můžete použít k určení hodnoty AccessTier jako HOT, COOL, COLDnebo ARCHIVE. Pokud rehydrujete objekt blob z archivní vrstvy pomocí operace kopírování, pomocí metody setRehydratePriority zadejte hodnotu RehydratePriority jako HIGH nebo STANDARD.

Následující příklad kódu ukazuje, jak rehydratovat archivovaný objekt blob do úrovně Hot pomocí operace kopírování:

public void rehydrateBlobUsingCopy(
    BlobClient sourceArchiveBlob,
    BlobClient destinationRehydratedBlob) {
    // Note: the destination blob must have a different name than the archived source blob

    // Start the copy operation and wait for it to complete
    final SyncPoller<BlobCopyInfo, Void> poller = destinationRehydratedBlob.beginCopy(
            new BlobBeginCopyOptions(sourceArchiveBlob.getBlobUrl())
                    .setTier(AccessTier.HOT)
                    .setRehydratePriority(RehydratePriority.STANDARD));
                    
    PollResponse<BlobCopyInfo> response = poller
            .waitUntil(LongRunningOperationStatus.SUCCESSFULLY_COMPLETED);
}

Další informace o kopírování objektu blob pomocí Javy najdete v tématu Kopírování objektu blob pomocí Javy.

Resources

Další informace o nastavení úrovní přístupu 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 nastavení úrovní přístupu 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ě.