Compartilhar via


Configurar ou alterar a camada de acesso de um blob de blocos com Java

Este artigo mostra como configurar ou alterar a camada de acesso de um blob de blocos usando a Biblioteca de clientes do Armazenamento do Microsoft Azure para Java.

Pré-requisitos

Configure seu ambiente

Se você não tiver um projeto existente, esta seção mostrará como configurar um projeto para que ele funcione com a biblioteca de clientes do Armazenamento de Blobs do Azure para Java. Para obter mais informações, confira Introdução ao Armazenamento de Blobs do Azure e ao Java.

Para trabalhar com os exemplos de código neste artigo, siga estas etapas para configurar seu projeto.

Observação

Este artigo usa a ferramenta de build do Maven para compilar e executar o código de exemplo. Outras ferramentas de build, como o Gradle, também funcionam com o SDK do Azure para Java.

Instalar Pacotes

Abra o arquivo pom.xml no seu editor de texto. Instale os pacotes incluindo o arquivo BOM ou incluindo uma dependência direta.

Adicionar instruções de importação

Adicione as seguintes declarações de 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;

Autorização

O mecanismo de autorização deve ter as permissões necessárias para definir a camada de acesso de um blob. Para autorização com o Microsoft Entra ID (recomendado), você precisa da função interna de Colaborador de Dados de Blob de Armazenamento ou superior do RBAC do Azure. Para saber mais, confira as diretrizes de autorização para Definir Camada de Blob.

Criar um objeto cliente

Para conectar um aplicativo ao Armazenamento de Blobs, crie uma instância do BlobServiceClient.

O exemplo a seguir usa BlobServiceClientBuilder para criar um objeto BlobServiceClient usando DefaultAzureCredential e mostra como criar clientes de contêiner e blob, se necessário:

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

Para saber mais sobre como criar e gerenciar objetos clientes, confira Criar e gerenciar objetos clientes que interagem com recursos de dados.

Sobre as camadas de acesso de blob de blocos

Para gerenciar os custos das necessidades de armazenamento, pode ser útil organizar seus dados com base na frequência com que são acessados e por quanto tempo precisam ser retidos. O Armazenamento do Azure oferece diferentes camadas de acesso para que você possa armazenar seus dados de blob da maneira mais econômica com base em como eles estão sendo usados.

Camadas de acesso para dados de blob

As camadas de acesso do Armazenamento do Azure incluem:

  • Camada quente – uma camada online otimizada para armazenar dados acessados ou modificados com frequência. A camada quente tem os custos de armazenamento mais altos, mas os custos de acesso mais baixos.
  • Camada fria – uma camada online otimizada para armazenar dados acessados ou modificados com pouca frequência. Os dados na camada fria devem ser armazenados por um mínimo de 30 dias. A camada fria tem custos de armazenamento mais baixos e custos de acesso mais altos em comparação com a camada quente.
  • Camada de acesso frio: uma camada online otimizada para armazenar dados acessados ou modificados com pouca frequência. Os dados na camada acesso frio devem ser armazenados por um mínimo de 90 dias. A camada de acesso frio tem custos de armazenamento mais baixos e custos de acesso mais altos em comparação com a camada de acesso esporádico.
  • Camada de arquivos: uma camada offline otimizada para armazenar dados acessados raramente ​​e com requisitos de latência flexíveis, na ordem de horas. Os dados na camada de arquivos devem ser armazenados por um mínimo de 180 dias.

Para saber mais sobre as modalidades de acesso, confira Camadas de acesso de dados do blob.

Enquanto um blob estiver na camada de acesso aos arquivos, ele será considerado offline e não poderá ser lido nem alterado. Para ler ou modificar dados em um blob arquivado, primeiro você deve reidratar o blob para uma camada online. Para saber mais sobre como reidratar um blob da Camada de arquivos para uma camada online, confira Reidratação de blobs da Camada de arquivos.

Restrições

A configuração da camada de acesso somente é permitida em blobs de blocos. Para saber mais sobre restrições na configuração da camada de acesso de um blob de blocos, consulte Definir Camada de Blob (API REST).

Observação

Para configurar a camada de acesso como Cold usando o Java, você deve usar no mínimo a versão 12.21.0 da biblioteca de clientes.

Definir a camada de acesso de um blob durante o upload

Você pode definir a camada de acesso de um blob durante o upload usando a classe BlobUploadFromFileOptions. O exemplo de código a seguir mostra como definir a camada de acesso ao carregar um 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());
    }
}

Para saber mais sobre como carregar um blob com o Java, confira Carregar um blob com o Java.

Alterar a camada de acesso para um blob de bloco existente

Você pode alterar a camada de acesso de um blob de blocos existente usando um dos seguintes métodos:

A amostra de código a seguir mostra como alterar a camada de acesso de um blob existente para a Camada de acesso esporádico:

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

Se você estiver reidratando um blob arquivado, use o método setAccessTierWithResponse. Defina o parâmetro tier como um valor de AccessTier válido de HOT, COOL, COLD ou ARCHIVE. Opcionalmente, você pode definir o parâmetro priority como um valor de RehydratePriority como HIGH ou STANDARD válido.

O exemplo de código a seguir mostra como reidratar um blob arquivado alterando a camada de acesso para Camada de armazenamento frequente:

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

O método setAccessTierWithResponse também pode aceitar um parâmetro BlobSetAccessTierOptions para especificar opções de configuração.

Copiar um blob para uma camada de acesso diferente

Você pode alterar a camada de acesso de um blob de blocos existente especificando uma camada de acesso como parte de uma operação de cópia. Para alterar a camada de acesso durante uma operação de cópia, use a classe BlobBeginCopyOptions.

Você pode usar o método setTier para especificar o valor AccessTier como HOT, COOL, COLD ou ARCHIVE. Se você estiver reidratando um blob da camada de arquivos usando uma operação de cópia, use o método setRehydratePriority para especificar o valor de RehydratePriority como HIGH ou STANDARD.

A amostra de código a seguir mostra como reidratar um blob arquivado para a Camada de acesso frequente usando uma operação de cópia:

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

Para obter mais informações sobre como copiar um blob com o Java, confira Copiar um blob com o Java.

Recursos

Para saber mais sobre a configuração de camadas de acesso usando a biblioteca de clientes do Armazenamento de Blobs do Azure para Java, consulte os recursos a seguir.

Exemplos de código

Operações da API REST

O SDK do Azure para Java contém bibliotecas que criam sobre a API REST do Azure, permitindo a interação com as operações de API REST por meio de paradigmas conhecidos do Java. Os métodos da biblioteca de clientes para configurar as camadas de acesso usam a seguinte operação de API REST:

Recursos da biblioteca de clientes

Confira também

  • Este artigo faz parte do guia do desenvolvedor do Armazenamento de Blobs para Java. Para saber mais, veja a lista completa de artigos do guia do desenvolvedor em Criar seu aplicativo Java.