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 como4.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.
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}
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
DefaultAzureCredential
o , 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?
Depois que o aplicativo estiver em execução, use
curl
para testar o aplicativo seguindo estas etapas.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
.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: