Carregar um arquivo em um Armazenamento de Blobs do Azure

Este tutorial mostra como carregar e ler blobs de contêiner em uma conta de Armazenamento de Blobs do Azure 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 à sua conta acesso a recursos, em sua conta de Armazenamento do Azure recém-criada, atribua a Storage Blob Data Contributor função à 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

O Spring Boot versão 2.5 ou superior é necessário para concluir as etapas deste tutorial.

Criar um contêiner

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

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

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

Para instalar o módulo Spring Cloud Azure Storage Blob Starter, adicione as seguintes dependências ao arquivo pom.xml :

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

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.azure.spring</groupId>
          <artifactId>spring-cloud-azure-dependencies</artifactId>
          <version>5.11.0</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.17.0. Esta lista de materiais (BOM) deve ser configurada <dependencyManagement> na seção do arquivo pom.xml . Isso garante que todas as dependências do Spring Cloud Azure estejam usando a mesma versão. Para obter mais informações sobre a versão usada para esta BOM, consulte Qual versão do Spring Cloud Azure devo usar.

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

    <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 Spring Cloud Azure, 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 BlobController classe Java, 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 Spring Cloud Azure usa DefaultAzureCredentialo , que a biblioteca de Identidade do Azure fornece para ajudá-lo a obter credenciais sem alterações de código.

    DefaultAzureCredential dá suporte a vários métodos de autenticação e determina qual método usar no runtime. Essa abordagem permite que seu aplicativo use métodos de autenticação diferentes em ambientes diferentes (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 local, 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 usar a 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 o aplicativo estiver em execução, use curl para testá-lo 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ê deve 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 a produção. Os Aplicativos Spring do Azure facilitam a implantação de aplicativos Spring Boot no Azure sem alterações de 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 Spring Boot Starters adicionais disponíveis para o Microsoft Azure, consulte O que é o Spring Cloud Azure?

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