Partilhar via


Carregar um ficheiro para 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 a partir de um aplicativo Spring Boot.

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

Pré-requisitos

  • Uma assinatura do Azure - crie uma gratuitamente.
  • Java Development Kit (JDK) versão 8 ou superior.
  • Apache Maven, versão 3.0 ou superior.
  • cURL ou um utilitário HTTP semelhante para testar a funcionalidade.
  • Uma conta de armazenamento e um contêiner do Azure. Se você não tiver uma, crie uma conta de armazenamento.
  • Um aplicativo Spring Boot. Se você não tiver um, crie um projeto Maven com o Spring Initializr. Certifique-se de selecionar Projeto Maven e, em Dependências, adicione a dependência do Spring Web e, em seguida, selecione Java versão 8 ou superior.

Nota

Para conceder à sua conta acesso aos recursos, na sua conta de Armazenamento do Azure recém-criada, atribua a Storage Blob Data Contributor função à conta do Microsoft Entra que está a utilizar atualmente. Para obter mais informações, consulte Utilizar o portal do Azure para atribuir funções do Azure.

Importante

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

Criar um contentor

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 da conta de Armazenamento do Azure

Agora que você tem uma conta e um contêiner do Armazenamento do Azure, 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 seu 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.18.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

    Nota

    Se estiver a utilizar o Spring Boot 2.x, certifique-se de que define a spring-cloud-azure-dependencies versão como 4.19.0. Esta lista de materiais (BOM) deve ser configurada na <dependencyManagement> seção do seu arquivo de 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 essa lista técnica, consulte Qual versão do Spring Cloud Azure devo usar.

  • O artefato Spring Cloud Azure Storage Blob Starter:

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

Codificar a aplicação

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

    Gorjeta

    Neste tutorial, não há operações de autenticação nas configurações ou no código. No entanto, conectar-se aos 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 Identidades do Azure fornece para ajudá-lo a obter credenciais sem alterações de código.

    DefaultAzureCredential Suporta vários métodos de autenticação e determina qual método usar em tempo de execução. Essa abordagem permite que seu aplicativo use diferentes métodos de autenticação 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 o uso da identidade gerenciada atribuída pelo usuário. Para obter mais informações, consulte O que são identidades gerenciadas para recursos do Azure?

  3. Depois que o aplicativo estiver em execução, use curl para testar o 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ê 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
      

      Deverá ver o texto da "nova mensagem" que publicou.

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. O Azure Spring Apps facilita a implantação de aplicativos Spring Boot no Azure sem alterações de código. O serviço gerencia a infraestrutura dos aplicativos Spring para que os desenvolvedores possam se concentrar em seu código. O Azure Spring Apps fornece gerenciamento do ciclo de vida usando monitoramento e diagnóstico abrangentes, gerenciamento de configuração, descoberta de serviços, integração de CI/CD, implantações azul-verde e muito mais. Para implantar seu aplicativo no Azure Spring Apps, consulte Implantar seu primeiro aplicativo no Azure Spring Apps.

Próximos passos

Para saber mais sobre o Spring e o Azure, avance para o centro de documentação relativa ao Spring no Azure.

Consulte 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 do Azure adicionais que você pode chamar de seus aplicativos Spring Boot, consulte os seguintes artigos: