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.

Požadavky

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.

Poznámka:

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 kusovníku nebo zahrnutím přímé závislosti.

Přidání příkazů importu

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

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;

Autorizace

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 předdefinovanou roli Přispěvatel dat objektů blob služby Azure RBAC nebo vyšší. Další informace najdete v pokynech k autorizaci 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 datům v objektech blob

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.
  • Studená úroveň – online úroveň optimalizovaná pro ukládání dat, která jsou zřídka přístupná nebo upravená. 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 na úrovni Zřídkavý přístup by měla být uložená minimálně 90 dnů. Úroveň Zřídkavý přístup má v porovnání se studenou úrovní nižší náklady na úložiště a vyšší náklady na přístup.
  • 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

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ého objektu blob, musíte nejprve znovu dosadit objekt blob do online vrstvy. Další informace o dosazování objektu blob z archivní úrovně do online úrovně najdete v tématu Dosazování objektů blob z archivní úrovně.

Omezení

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

Poznámka:

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

Nastavení úrovně 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í objektu blob:

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í objekt blob bloku

Ú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 změnit úroveň přístupu na Studenou pro existující objekt blob:

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

Pokud dosazujete archivovaný objekt blob, použijte metodu setAccessTierWithResponse . tier Nastavte parametr na platnou hodnotu AccessTier of HOT, COOL, COLDnebo ARCHIVE. Volitelně můžete parametr nastavit priority na platnou hodnotu HIGH RehydratePriority nebo STANDARD.

Následující příklad kódu ukazuje, jak dosadit archivovaný objekt blob změnou úrovně přístupu na horkou:

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írování objektu 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 dosadit archivovaný objekt blob do horké vrstvy 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.

Zdroje informací

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ě.