Carregar um arquivo para um Armazenamento do Blobs do Azure

Este tutorial mostra como carregar e ler blobs de contêineres em uma conta do Armazenamento de Blobs do Azure a partir de um aplicativo Spring Boot.

O Armazenamento de Blobs do Azure é uma solução de armazenamento de objetos da Microsoft para a nuvem. O armazenamento de blobs é otimizado para armazenar uma grande quantidade de dados não estruturados, como texto ou dados binários.

Pré-requisitos

Observação

Para conceder acesso à sua conta aos recursos, em sua conta de Armazenamento do Azure recém-criada, atribua a função Storage Blob Data Contributor à conta do Microsoft Entra que você está usando no momento. Para obter mais informações, confira Atribuir funções do Azure usando o portal do Azure.

Importante

É necessário o Spring Boot versão 2.5 ou superior para concluir as etapas neste tutorial.

Criar um contêiner

Primeiro, crie um contêiner nomeado testcontainer seguindo as instruções em Início Rápido: carregar, baixar e listar blobs com o portal do Azure.

Carregar e ler blobs do contêiner da conta de Armazenamento do Azure

Agora que você tem uma conta e um contêiner de Armazenamento do Azure, pode carregar e ler arquivos de blobs com o Spring Cloud Azure.

Para instalar o módulo Carregar um arquivo em um Armazenamento de Blobs do Azure, adicione as seguintes dependências ao arquivo pom.xml:

  • A lista de materiais (BOM) do Azure Spring Cloud:

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.azure.spring</groupId>
          <artifactId>spring-cloud-azure-dependencies</artifactId>
          <version>5.17.1</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

    Observação

    Se você estiver usando o Spring Boot 2.x, certifique-se de definir a spring-cloud-azure-dependencies versão como 4.19.0. Esta lista de materiais (BOM) deve ser configurada na <dependencyManagement> seção do arquivo pom.xml. Isso garante que todas as dependências do Azure Spring Cloud estejam usando a mesma versão. Para obter mais informações sobre a versão usada para esta BOM, consulte Qual versão do Azure Spring Cloud devo usar.

  • O artefato do Blob de Armazenamento do Iniciador do Azure Spring Cloud:

    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-starter-storage-blob</artifactId>
    </dependency>
    

Codificar o aplicativo

Para carregar e ler arquivos de blobs usando o iniciador de Blob de Armazenamento do Azure do Spring Cloud, configure o aplicativo usando as etapas a seguir.

  1. Configure um nome de conta de armazenamento e um ponto de extremidade no arquivo de configuração application.properties, conforme mostrado no exemplo a seguir.

    spring.cloud.azure.storage.blob.account-name=${AZURE_STORAGE_ACCOUNT_NAME}
    spring.cloud.azure.storage.blob.endpoint=${AZURE_STORAGE_ACCOUNT_ENDPOINT}
    
  2. Crie uma nova classe Java BlobController conforme mostrado no exemplo a seguir. Essa classe é usada para carregar e ler arquivos do blob de contêiner na conta de Armazenamento do Azure.

    package com.example.demo;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.core.io.Resource;
    import org.springframework.core.io.WritableResource;
    import org.springframework.util.StreamUtils;
    import org.springframework.web.bind.annotation.*;
    
    import java.io.IOException;
    import java.io.OutputStream;
    import java.nio.charset.Charset;
    
    @RestController
    @RequestMapping("blob")
    public class BlobController {
    
        @Value("azure-blob://testcontainer/test.txt")
        private Resource blobFile;
    
        @GetMapping("/readBlobFile")
        public String readBlobFile() throws IOException {
            return StreamUtils.copyToString(
                    this.blobFile.getInputStream(),
                    Charset.defaultCharset());
        }
    
        @PostMapping("/writeBlobFile")
        public String writeBlobFile(@RequestBody String data) throws IOException {
            try (OutputStream os = ((WritableResource) this.blobFile).getOutputStream()) {
                os.write(data.getBytes());
            }
            return "file was updated";
        }
    }
    

    Dica

    Neste tutorial, não há operações de autenticação nas configurações ou no código. No entanto, a conexão com os serviços do Azure requer autenticação. Para concluir a autenticação, você precisa usar a Identidade do Azure. O Azure Spring Cloud usa DefaultAzureCredential, que a biblioteca Azure Identity fornece para ajudá-lo a obter credenciais sem nenhuma alteração de código.

    DefaultAzureCredential dá suporte a vários métodos de autenticação e determina qual método usar no runtime. Essa abordagem habilita seu aplicativo a usar diferentes métodos de autenticação em diferentes ambientes, como ambientes locais e de produção, sem implementar código específico do ambiente. Para obter mais informações, consulte DefaultAzureCredential.

    Para concluir a autenticação em ambientes de desenvolvimento locais, você pode usar a CLI do Azure, o Visual Studio Code, o PowerShell ou outros métodos. Para obter mais informações, consulte Autenticação do Azure em ambientes de desenvolvimento Java. Para concluir a autenticação em ambientes de hospedagem do Azure, recomendamos o uso de identidade gerenciada atribuída pelo usuário. Para obter mais informações, confira O que são as identidades gerenciadas para recursos do Azure?

  3. Depois que seu aplicativo estiver em execução, use curl para testar seu aplicativo seguindo estas etapas.

    1. Envie uma solicitação POST para atualizar o conteúdo de um arquivo usando o seguinte comando:

      curl http://localhost:8080/blob/writeBlobFile -d "new message" -H "Content-Type: text/plain"
      

      Você deverá ver uma resposta que diz file was updated.

    2. Envie uma solicitação GET para verificar o conteúdo do arquivo usando o seguinte comando:

      curl -X GET http://localhost:8080/blob/readBlobFile
      

      Você verá o texto de "nova mensagem" postado.

Implantar no Azure Spring Apps

Agora que você tem o aplicativo Spring Boot em execução localmente, é hora de movê-lo para produção. Os Aplicativos Spring do Azure facilita a implantação de aplicativos Spring Boot no Azure sem nenhuma alteração no código. O serviço gerencia a infraestrutura dos aplicativos do Spring para que os desenvolvedores possam se concentrar no código. O Azure Spring Apps fornece gerenciamento de ciclo de vida usando monitoramento e diagnóstico abrangentes, gerenciamento de configuração, descoberta de serviços, integração de CI/CD, implantações em “blue-green” e muito mais. Para implantar seu aplicativo nos Aplicativos Spring do Azure, consulte Implantar seu primeiro aplicativo nos Aplicativos Spring do Azure.

Próximas etapas

Para saber mais sobre o Spring e o Azure, continue no Spring no Centro de Documentação do Azure.

Confira também

Para obter mais informações sobre os Iniciadores do Spring Boot adicionais que estão disponíveis para o Microsoft Azure, consulte O que é o Spring Cloud Azure?

Para obter mais informações sobre APIs de armazenamento do Azure adicionais que você pode chamar a partir de seus aplicativos Spring Boot, consulte os artigos a seguir: