Compartilhar via


Gerenciar propriedades de contêiner e metadados com o Java

Os contêineres de blob dão suporte a propriedades do sistema e metadados definidos pelo usuário, além dos dados que eles contêm. Este artigo mostra como gerenciar as propriedades do sistema e os metadados definidos pelo usuário 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.storage.blob.*;
import com.azure.storage.blob.models.*;
import java.util.*;

Autorização

O mecanismo de autorização precisa ter as permissões necessárias para trabalhar com metadados ou propriedades de contêiner. Para autorização com o Microsoft Entra ID (recomendado), você precisa da função interna do RBAC do Azure Leitor de Dados de Blob de Armazenamento ou superior para operações get e Colaborador de Dados de Blob de Armazenamento ou superior para as operações set. Para saber mais, consulte as diretrizes de autorização para Obter propriedades de contêiner, Definir metadados de contêiner (API REST) ou Obter metadados de contêiner (API REST).

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.

Propriedades e metadados

  • Propriedades do sistema: existem propriedades do sistema em cada recurso de Armazenamento de Blobs. Algumas podem ser lidas ou definidas, enquanto outras são de somente leitura. Nos bastidores, algumas propriedades do sistema correspondem a certos cabeçalhos HTTP padrão. A biblioteca de clientes do Armazenamento do Microsoft Azure para Java mantém essas propriedades para você.

  • Metadados definidos pelo usuário: os metadados definidos pelo usuário consistem em um ou mais pares nome-valor que você especifica para um recurso de armazenamento de Blob. É possível usar os metadados para armazenar valores adicionais com o recurso. Os valores de metadados são apenas para serem usados para os objetivos que você desejar e não afetam o comportamento do recurso.

    Os pares de nome/valor de metadados são cabeçalhos HTTP válidos e devem cumprir todas as restrições que regem os cabeçalhos HTTP. Para obter mais informações sobre os requisitos de nomenclatura de metadados, consulte Nomes de metadados.

Recuperar propriedades do contêiner

Para recuperar as propriedades do contêiner, use o seguinte método:

O exemplo de código a seguir busca as propriedades do sistema de um contêiner e grava os valores de propriedade em uma janela de console:

public void getContainerProperties(BlobContainerClient blobContainerClient) {
    BlobContainerProperties properties = blobContainerClient.getProperties();
    System.out.printf("Public Access Type: %s, Legal Hold? %b, Immutable? %b%n",
            properties.getBlobPublicAccess(),
            properties.hasLegalHold(),
            properties.hasImmutabilityPolicy());
}

Definir e recuperar metadados

Você pode especificar os metadados como um ou mais pares de nome-valor em um recurso de contêiner ou blob. Para definir metadados, use o seguinte método:

Definir metadados de contêiner substitui todos os metadados existentes associados ao contêiner. Não é possível alterar um par de nome-valor individual.

O exemplo de código a seguir define os metadados em um contêiner:

public void addContainerMetadata(BlobContainerClient blobContainerClient) {
    Map<String, String> metadata = new HashMap<String, String>();
    metadata.put("docType", "text");
    metadata.put("category", "reference");

    try {
        blobContainerClient.setMetadata(metadata);
        System.out.printf("Set metadata completed %n");
    } catch (UnsupportedOperationException error) {
        System.out.printf("Failure while setting metadata %n");
    }
}

Para recuperar metadados, chame o seguinte método:

O exemplo a seguir lê em valores de metadados:

public void readContainerMetadata(BlobContainerClient blobContainerClient) {
    BlobContainerProperties properties = blobContainerClient.getProperties();

    System.out.printf("Container metadata: %n");
    properties.getMetadata().entrySet().forEach(metadataItem -> {
        System.out.printf(" %s = %s%n", metadataItem.getKey(), metadataItem.getValue());
    });
}

Recursos

Para saber mais sobre como definir e recuperar propriedades e metadados do contêiner 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 definir e recuperar propriedades e metadados usam as seguintes operações da API REST:

O método getProperties recupera propriedades e metadados do contêiner chamando a operação Obter Propriedades de Blob e a operação Obter Metadados de Blob.

Recursos da biblioteca de clientes

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