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
- Uma assinatura do Azure – crie uma gratuitamente.
- Java Development Kit (JDK) versão 8 ou superior.
- Apache Maven, versão 3.0 ou superior.
- O cURL ou um utilitário HTTP semelhante para testar a funcionalidade.
- Uma conta e um contêiner de armazenamento do Azure. Se você não possuir uma, crie uma conta de armazenamento.
- Um aplicativo Spring Boot. Caso não tiver um, crie um projeto Maven com o Spring Initializr. Selecione Projeto Maven e, em Dependências, adicione a dependência do Spring Web e selecione Java versão 8 ou superior.
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 como4.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.
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 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?
Depois que seu aplicativo estiver em execução, use
curl
para testar seu 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ê deverá 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
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: