Compartilhar via


Introdução ao Armazenamento de Blobs do Azure e ao Java

Este artigo mostra como se conectar ao Armazenamento de Blobs do Azure usando a biblioteca de clientes para Java do Armazenamento de Blobs do Azure. Depois de conectado, use os guias do desenvolvedor para saber como seu código pode operar em contêineres, blobs e recursos do serviço de Armazenamento de Blobs.

Se você quiser começar com um exemplo completo, consulte Início Rápido: biblioteca de clientes do Armazenamento de Blobs do Azure para Java.

Referência de API | Pacote (Maven) | Código-fonte da biblioteca | Exemplos | Enviar comentários

Pré-requisitos

Configurar o 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.

Use o Maven para criar um novo aplicativo de console ou abrir um projeto existente. Siga estas etapas para instalar pacotes e adicionar as diretivas necessárias import .

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.

Incluir o arquivo da BOM

Adicione azure-sdk-bom para usar uma dependência da última versão da biblioteca. No snippet a seguir, substitua o espaço reservado {bom_version_to_target} pelo número de versão. O uso do azure-sdk-bom elimina a necessidade de especificação da versão de cada dependência individual. Para saber mais sobre o BOM, confira o LEIAME do BOM do SDK do Azure.

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.azure</groupId>
            <artifactId>azure-sdk-bom</artifactId>
            <version>{bom_version_to_target}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

Adicione os seguintes elementos de dependência ao grupo de dependências. A dependência azure-identity é necessária para conexões sem senha com os serviços do Azure.

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-storage-blob</artifactId>
</dependency>
<dependency>
      <groupId>com.azure</groupId>
      <artifactId>azure-storage-common</artifactId>
</dependency>
<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-identity</artifactId>
</dependency>

Incluir uma dependência direta

Para assumir a dependência de uma versão específica da biblioteca, adicione a dependência direta ao seu projeto:

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-storage-blob</artifactId>
    <version>{package_version_to_target}</version>
</dependency>
<dependency>
      <groupId>com.azure</groupId>
      <artifactId>azure-storage-common</artifactId>
      <version>{package_version_to_target}</version>
</dependency>
<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-identity</artifactId>
    <version>{package_version_to_target}</version>
</dependency>

Incluir diretivas de importação

Em seguida, abra o arquivo de código e adicione as diretivas import necessárias. Neste exemplo, adicionamos as seguintes diretivas no arquivo App.java:

import com.azure.core.credential.*;
import com.azure.identity.*;
import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;
import com.azure.storage.blob.specialized.*;
import com.azure.storage.common.*;

Informações da biblioteca de clientes do blob:

Autorizar o acesso e se conectar ao Armazenamento de Blobs

Para conectar um aplicativo ao Armazenamento de Blobs, crie uma instância da classe BlobServiceClient. Você também pode usar a classe BlobServiceAsyncClient de programação assíncrona. Esse objeto é seu ponto de partida para interagir com os recursos de dados no nível da conta de armazenamento. Você pode usá-lo para operar na conta de armazenamento e nos respectivos contêineres. Você também pode usar o cliente de serviço para criar clientes de contêiner ou clientes de blob, dependendo do recurso com o qual você precisa trabalhar.

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

Você pode autorizar um objeto BlobServiceClient usando um token de autorização do Microsoft Entra, uma chave de acesso de conta ou uma assinatura de acesso compartilhado (SAS). Para otimizar a segurança, a Microsoft recomenda o uso do Microsoft Entra ID com identidades gerenciadas para autorizar solicitações contra dados de blob. Para obter mais informações, consulte Autorizar o acesso a blobs usando o Microsoft Entra ID.

Para autorizar com o Microsoft Entra ID, precisará usar uma entidade de segurança. O tipo de entidade de segurança de que você precisa depende do local em que o aplicativo é executado. Use a tabela a seguir como guia:

O local em que o aplicativo é executado Entidade de segurança Diretrizes
Computador local (desenvolvimento e teste) Entidade de serviço Para saber como registrar o aplicativo, configure um grupo do Microsoft Entra, atribua funções e configure variáveis de ambiente, consulte Autorizar o acesso usando entidades de serviço do desenvolvedor.
Computador local (desenvolvimento e teste) Identidade do usuário Para saber como configurar um grupo do Microsoft Entra, atribua funções e entre no Azure, consulte Autorizar acesso usando credenciais de desenvolvedor.
Hospedada no Azure Identidade gerenciada Para saber como habilitar a identidade gerenciada e atribuir funções, confira Autorizar o acesso de aplicativos hospedados no Azure usando uma identidade gerenciada.
Hospedado fora do Azure (por exemplo, aplicativos locais) Entidade de serviço Para saber como registrar o aplicativo, atribuir funções e configurar variáveis de ambiente, confira Autorizar o acesso em aplicativos locais usando uma entidade de serviço de aplicativo

Autorizar o acesso usando DefaultAzureCredential

Uma maneira fácil e segura de autorizar o acesso e se conectar ao Armazenamento de Blobs é obter um token OAuth criando uma instância de DefaultAzureCredential. Depois, você pode usar essa credencial para criar um objeto BlobServiceClient.

Verifique se você tem as dependências corretas no pom.xml e as diretivas de importação necessárias, conforme descrito em Configurar seu projeto.

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

Configurar a TTL JVM para pesquisas de nome DNS

A Máquina Virtual Java (JVM) armazena em cache respostas de pesquisas de nome DNS bem-sucedidas para um período de tempo especificado, conhecido como vida útil (TTL). O valor TTL padrão para muitas JVMs é -1, o que significa que a JVM armazena a resposta em cache indefinidamente ou até que a JVM seja reiniciada.

Como os recursos do Azure usam entradas de nome DNS que podem ser alteradas, recomendamos que você defina o valor de TTL da JVM como 10 segundos. Esta configuração garante que um endereço IP atualizado para um recurso seja retornado com a próxima consulta DNS.

Para alterar o valor TTL globalmente para todos os aplicativos usando a JVM, defina a propriedade networkaddress.cache.ttl no arquivo java.security.

networkaddress.cache.ttl=10

Para Java 8, o arquivo java.security está localizado no diretório $JAVA_HOME/jre/lib/security. Para Java 11 e versões superiores, o arquivo está localizado no diretório $JAVA_HOME/conf/security.

Compilar o aplicativo

À medida que você cria aplicativos para trabalhar com recursos de dados no Armazenamento de Blobs do Azure, seu código interage principalmente com três tipos de recursos: contas de armazenamento, contêineres e blobs. Para saber mais sobre esses tipos de recursos, como eles se relacionam entre si e como os aplicativos interagem com os recursos, confira Entender como os aplicativos interagem com os recursos de dados do Armazenamento de Blobs.

Os guias a seguir mostram como acessar dados e executar ações específicas usando a biblioteca de clientes do Armazenamento do Microsoft Azure para Java:

Guia Descrição
Configurar uma política de repetição Implementar políticas de repetição para operações do cliente.
Copiar blobs Copie um blob de uma localização para outra.
Criar um contêiner Criar contêineres de blob.
Criar uma SAS de delegação de usuário Crie uma delegação de usuário SAS para um contêiner ou blob.
Criar e gerenciar concessões de blob Estabeleça e gerencie um bloqueio em um blob.
Criar e gerenciar concessões de contêiner Estabeleça e gerencie um bloqueio em um contêiner.
Excluir e restaurar blobs Exclua os blobs, e, se a exclusão reversível estiver habilitada, restaure os blobs excluídos.
Excluir e restaurar contêineres Exclua contêineres e, se a exclusão reversível estiver habilitada, restaure os contêineres excluídos.
Baixar blobs Baixe blobs usando cadeias de caracteres, fluxos e caminhos de arquivo.
Encontrar blobs usando marcas Defina e recupere marcas, bem como use marcas para localizar blobs.
Listar blobs Liste blobs de maneiras diferentes.
Listar contêineres Liste os contêineres em uma conta e as diversas opções disponíveis para personalizar uma listagem.
Gerenciar propriedades e metadados (blobs) Obtenha e defina as propriedades e metadados dos blobs.
Gerenciar propriedades e metadados (contêineres) Obtenha e defina as propriedades e metadados dos contêineres.
Ajuste de desempenho para transferências de dados Otimizar o desempenho para operações de transferência de dados.
Definir ou alterar o nível de acesso de um blob Defina ou altere a camada de acesso para um blob de blocos.
Carregar blobs Saiba como carregar blobs usando cadeias de caracteres, fluxos, caminhos de arquivo e outros métodos.