Compartilhar via


Use o Spring Boot para carregar um arquivo para Azure Blob Storage

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

Azure Blob Storage é a 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 Azure Storage recém-criada, atribua a função Storage Blob Data Contributor à conta Microsoft Entra que você está usando no momento. Para obter mais informações, consulte 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 chamado testcontainer seguindo as instruções em Quickstart: Carregar, baixar e listar blobs com o portal Azure.

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

Agora que você tem uma conta Azure Storage e um contêiner, você 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:

  • Spring Cloud Azure Bill of Materials (BOM):

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

    Observação

    Se você estiver usando o Spring Boot 4.0.x, defina a spring-cloud-azure-dependencies versão como 7.1.0.

    Se você estiver usando o Spring Boot 3.5.x, defina a spring-cloud-azure-dependencies versão como 6.1.0.

    Se você estiver usando o Spring Boot 3.1.x-3.5.x, defina a spring-cloud-azure-dependencies versão como 5.25.0.

    Se você estiver usando o Spring Boot 2.x, certifique-se de definir a spring-cloud-azure-dependencies versão como 4.20.0.

    Esta lista de materiais (BOM) deve ser configurada na <dependencyManagement> seção do arquivo pom.xml. Isso garante que todas as dependências de Azure do Spring Cloud estejam usando a mesma versão.

    Para obter mais informações sobre a versão usada para este BOM, consulte Which Version of Spring Cloud Azure Should I Use.

  • O artefato do Spring Cloud Azure Storage Blob Starter:

    <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 Blobs do Spring Cloud Azure Storage, 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 BlobController Java, conforme mostrado no exemplo a seguir. Essa classe é usada para carregar e ler arquivos do blob de contêiner na conta Azure Storage.

    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, conectar-se a serviços Azure requer autenticação. Para concluir a autenticação, você precisa usar Azure Identity. O Spring Cloud Azure usa DefaultAzureCredential, que a biblioteca de identidades 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 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 Azure CLI, Visual Studio Code, PowerShell ou outros métodos. Para obter mais informações, consulte autenticação do Azure em ambientes de desenvolvimento em Java. Para concluir a autenticação em ambientes de hospedagem Azure, recomendamos usar a identidade gerenciada atribuída pelo usuário. Para obter mais informações, consulte O que são identidades gerenciadas para recursos 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ê deve ver o texto "nova mensagem" que você postou.

Implantar em Azure Spring Apps

Agora que você tem o aplicativo Spring Boot em execução localmente, é hora de movê-lo para produção. Azure Spring Apps facilita a implantação de aplicativos Spring Boot para 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. Azure Spring Apps fornece gerenciamento de ciclo de vida usando monitoramento e diagnóstico abrangentes, gerenciamento de configuração, descoberta de serviço, integração de CI/CD, implantações azul-verde e muito mais. Para implantar seu aplicativo em Azure Spring Apps, consulte Deploy seu primeiro aplicativo para Azure Spring Apps.

Próximas etapas

Para saber mais sobre o Spring e Azure, continue para o Centro de documentação do Spring on Azure.

Confira também

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

Para obter mais informações sobre APIs de armazenamento do Azure adicionais que podem ser chamadas a partir de seus aplicativos Spring Boot, consulte os seguintes artigos: