Dela via


Ange eller ändra åtkomstnivån för en blockblob med Java

Den här artikeln visar hur du anger eller ändrar åtkomstnivån för en blockblob med hjälp av Azure Storage-klientbiblioteket för Java.

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.

Kommentar

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

Auktorisering

Auktoriseringsmekanismen måste ha de behörigheter som krävs för att ange åtkomstnivån för en blob. För auktorisering med Microsoft Entra-ID (rekommenderas) behöver du den inbyggda rollen Storage Blob Data Contributor eller senare. Mer information finns i auktoriseringsvägledningen för Ange blobnivå.

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 blockblobåtkomstnivåer

För att hantera kostnader för lagringsbehov kan det vara bra att organisera dina data baserat på hur ofta de används och hur länge de behöver behållas. Azure Storage erbjuder olika åtkomstnivåer så att du kan lagra dina blobdata på det mest kostnadseffektiva sättet baserat på hur de används.

Åtkomstnivåer för blobdata

Azure Storage-åtkomstnivåer omfattar:

  • Frekvent nivå – en onlinenivå som är optimerad för att lagra data som används eller ändras ofta. Den frekventa nivån har de högsta lagringskostnaderna, men de lägsta åtkomstkostnaderna.
  • Lågfrekvent nivå – en onlinenivå som är optimerad för lagring av data som sällan används eller ändras. Data på lågfrekvent nivå ska lagras i minst 30 dagar. Den lågfrekventa nivån har lägre lagringskostnader och högre åtkomstkostnader jämfört med den frekventa nivån.
  • Kall nivå – en onlinenivå som är optimerad för lagring av data som inte används sällan eller ändras. Data på nivån Infrekvent ska lagras i minst 90 dagar. Den infrekventa åtkomstnivån har lägre lagringskostnader och högre åtkomstkostnader jämfört med lågfrekvent lagringsnivå.
  • Arkivnivå – en offlinenivå som är optimerad för lagring av data som sällan används och som har flexibla svarstidskrav i timmar. Data på arkivnivån ska lagras i minst 180 dagar.

Mer information om åtkomstnivåer finns i Åtkomstnivåer för blobdata.

Även om en blob finns på arkivåtkomstnivån anses den vara offline och kan inte läsas eller ändras. För att kunna läsa eller ändra data i en arkiverad blob måste du först extrahera bloben till en onlinenivå. Mer information om hur du extraherar en blob från arkivnivån till en onlinenivå finns i Blob rehydrering från arkivnivån.

Begränsningar

Att ange åtkomstnivån tillåts endast för blockblobar. Mer information om begränsningar för att ange en blockblobs åtkomstnivå finns i Ange BLOB-nivå (REST API).

Kommentar

Om du vill ange åtkomstnivån till Cold java måste du använda en lägsta klientbiblioteksversion på 12.21.0.

Ange åtkomstnivån för en blob under uppladdningen

Du kan ange åtkomstnivån för en blob vid uppladdning med hjälp av klassen BlobUploadFromFileOptions . Följande kodexempel visar hur du anger åtkomstnivån när du laddar upp en 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());
    }
}

Mer information om hur du laddar upp en blob med Java finns i Ladda upp en blob med Java.

Ändra åtkomstnivån för en befintlig blockblob

Du kan ändra åtkomstnivån för en befintlig blockblob med någon av följande metoder:

I följande kodexempel visas hur du ändrar åtkomstnivån till Lågfrekvent för en befintlig blob:

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

Om du extraherar en arkiverad blob använder du metoden setAccessTierWithResponse . Ange parametern tier till ett giltigt AccessTier-värde för HOT, COOL, COLDeller ARCHIVE. Du kan också ange parametern priority till ett giltigt RehydratePriority-värde HIGH eller STANDARD.

I följande kodexempel visas hur du extraherar en arkiverad blob genom att ändra åtkomstnivån till Frekvent:

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);
}

Metoden setAccessTierWithResponse kan också acceptera en BlobSetAccessTierOptions-parameter för att ange konfigurationsalternativ.

Kopiera en blob till en annan åtkomstnivå

Du kan ändra åtkomstnivån för en befintlig blockblob genom att ange en åtkomstnivå som en del av en kopieringsåtgärd. Om du vill ändra åtkomstnivån under en kopieringsåtgärd använder du klassen BlobBeginCopyOptions .

Du kan använda metoden setTier för att ange värdet AccessTier som HOT, COOL, COLDeller ARCHIVE. Om du extraherar en blob från arkivnivån med en kopieringsåtgärd använder du metoden setRehydratePriority för att ange värdet RehydratePriority som HIGH eller STANDARD.

I följande kodexempel visas hur du återställer en arkiverad blob till frekvent nivå med hjälp av en kopieringsåtgärd:

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);
}

Mer information om hur du kopierar en blob med Java finns i Kopiera en blob med Java.

Resurser

Mer information om hur du ställer in åtkomstnivåer med hjälp av Azure Blob Storage-klientbiblioteket för Java finns i 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 ange åtkomstnivåer använder följande REST API-åtgärd:

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.