Definir ou alterar a camada de acesso de um blob de bloco com Java
Este artigo mostra como definir ou alterar a camada de acesso para um blob de bloco usando a biblioteca de cliente do Armazenamento do Azure para Java.
Pré-requisitos
- Subscrição do Azure - crie uma gratuitamente
- Conta de armazenamento do Azure - criar uma conta de armazenamento
- Java Development Kit (JDK) versão 8 ou posterior (recomendamos a versão 17 para a melhor experiência)
- O Apache Maven é usado para gerenciamento de projetos neste exemplo
Configurar o ambiente
Se você não tiver um projeto existente, esta seção mostra como configurar um projeto para trabalhar com a biblioteca de cliente do Armazenamento de Blobs do Azure para Java. Para obter mais informações, consulte Introdução ao Armazenamento de Blobs do Azure e Java.
Para trabalhar com os exemplos de código neste artigo, siga estas etapas para configurar seu projeto.
Nota
Este artigo usa a ferramenta de compilação Maven para criar e executar o código de exemplo. Outras ferramentas de compilação, como o Gradle, também funcionam com o SDK do Azure para Java.
Instalar pacotes
Abra o arquivo no editor de pom.xml
texto. Instale os pacotes incluindo o arquivo BOM ou incluindo uma dependência direta.
Adicionar instruções de importação
Adicione as seguintes instruções 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 do RBAC do Azure RBAC Storage Blob Data Contributor ou superior. Para saber mais, consulte as diretrizes de autorização para Definir camada de Blob.
Criar um objeto cliente
Para conectar um aplicativo ao Armazenamento de Blob, crie uma instância de BlobServiceClient.
O exemplo a seguir usa BlobServiceClientBuilder para criar um BlobServiceClient
objeto usando DefaultAzureCredential
o , 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 de cliente, consulte Criar e gerenciar objetos de cliente que interagem com recursos de dados.
Sobre as camadas de acesso de blob de bloco
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 blobs
As camadas de acesso do Armazenamento do Azure incluem:
- Hot tier - Uma camada online otimizada para armazenar dados que são acessados ou modificados com frequência. O nível quente tem os custos de armazenamento mais altos, mas os menores custos de acesso.
- Camada legal - Uma camada online otimizada para armazenar dados que são acessados ou modificados com pouca frequência. Os dados na camada fria devem ser armazenados por um período mínimo de 30 dias. O nível frio tem custos de armazenamento mais baixos e custos de acesso mais altos em comparação com o nível quente.
- Camada fria - Uma camada online otimizada para armazenar dados acessados ou modificados com pouca frequência. Os dados na camada de acesso infrequente devem ser armazenados durante um mínimo de 90 dias. A camada de acesso infrequente tem custos de armazenamento inferiores e custos de acesso superiores em comparação com a camada de acesso esporádico.
- Camada de arquivamento - Uma camada offline otimizada para armazenar dados que raramente são acessados e que tem requisitos de latência flexíveis, na ordem das horas. Os dados na camada de arquivo devem ser armazenados por um período mínimo de 180 dias.
Para saber mais sobre camadas de acesso, consulte Camadas de acesso para dados de blob.
Embora um blob esteja na camada de acesso Arquivo, ele é considerado offline e não pode ser lido ou modificado. Para ler ou modificar dados em um blob arquivado, você deve primeiro reidratar o blob para uma camada online. Para saber mais sobre como reidratar um blob da camada Arquivo para uma camada online, consulte Reidratação de Blob da camada Arquivo.
Restrições
A definição da camada de acesso só é permitida em blobs de bloco. Para saber mais sobre as restrições na definição da camada de acesso de um blob de bloco, consulte Definir camada de blob (API REST).
Nota
Para definir a camada de acesso para Cold
usar Java, você deve usar uma versão mínima da biblioteca do cliente 12.21.0.
Definir a camada de acesso de um blob durante o carregamento
Você pode definir a camada de acesso de um blob no 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 Java, consulte Carregar um blob com Java.
Alterar a camada de acesso para um blob de bloco existente
Você pode alterar a camada de acesso de um blob de bloco existente usando um dos seguintes métodos:
O exemplo de código a seguir mostra como alterar a camada de acesso para Cool para um blob existente:
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 tier
parâmetro como um valor AccessTier válido de HOT
, COOL
, COLD
, ou ARCHIVE
. Opcionalmente, você pode definir o priority
parâmetro como um valor HIGH
RehydratePriority válido ou STANDARD
.
O exemplo de código a seguir mostra como reidratar um blob arquivado alterando a camada de acesso para 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);
}
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 bloco 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 arquivamento usando uma operação de cópia, use o método setRehydratePriority para especificar o valor RehydratePriority como HIGH
ou STANDARD
.
O exemplo de código a seguir mostra como reidratar um blob arquivado para a camada Hot 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 saber mais sobre como copiar um blob com Java, consulte Copiar um blob com Java.
Recursos
Para saber mais sobre como definir camadas de acesso usando a biblioteca de cliente do Armazenamento de Blobs do Azure para Java, consulte os recursos a seguir.
Amostras de código
Operações da API REST
O SDK do Azure para Java contém bibliotecas que se baseiam na API REST do Azure, permitindo que você interaja com operações da API REST por meio de paradigmas Java familiares. Os métodos da biblioteca de cliente para definir camadas de acesso usam a seguinte operação de API REST:
- Definir camada de Blob (API REST)
Recursos da biblioteca do cliente
Consulte também
Conteúdos relacionados
- Este artigo faz parte do guia do desenvolvedor do Armazenamento de Blobs para Java. Para saber mais, consulte a lista completa de artigos do guia do desenvolvedor em Build your Java app.