Carga de un archivo a Azure Blob Storage
En este tutorial se muestra cómo cargar y leer desde blobs de contenedor en una cuenta de Azure Blob Storage desde una aplicación de Spring Boot.
Azure Blob Storage es la solución de almacenamiento de objetos de Microsoft para la nube. Blob Storage está optimizado para el almacenamiento de cantidades masivas de datos no estructurados, como texto o datos binarios.
Requisitos previos
- Una suscripción a Azure: cree una cuenta gratuita.
- Kit de desarrollo de Java (JDK) versión 8 o posterior.
- Apache Maven, versión 3.0 o posterior.
- cURL o una utilidad HTTP similar para probar la funcionalidad.
- Una cuenta y contenedor de Azure Storage. Si aún no tiene una, cree una cuenta de almacenamiento.
- Una aplicación de Spring Boot. Si no tiene ninguna, cree un proyecto de Maven con Spring Initializr. Asegúrese de seleccionar Proyecto de Maven y, en Dependencias, agregue la dependencia Web de Spring y, a continuación, seleccione Java versión 8 o posterior.
Nota:
Para conceder a la cuenta acceso a los recursos, en la cuenta de Azure Storage recién creada, asigne el rol Storage Blob Data Contributor
a la cuenta de Microsoft Entra que está usando actualmente. Para más información, consulte Asignación de roles de Azure mediante Azure Portal.
Importante
Se necesita Spring Boot versión 2.5 o superior para completar los pasos descritos en este tutorial.
Creación de un contenedor
En primer lugar, cree un contenedor denominado testcontainer
siguiendo las instrucciones de Inicio rápido: Carga, descarga y enumeración de blobs con Azure Portal.
Carga y lectura de blobs desde el contenedor de la cuenta de Azure Storage
Ahora que tiene una cuenta y un contenedor de Azure Storage, puede cargar y leer archivos de blobs con Spring Cloud Azure.
Para instalar el módulo Spring Cloud Azure Storage Blob Starter, agregue las siguientes dependencias al archivo pom.xml :
La lista de materiales (BOM) de Azure de 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:
Si usa Spring Boot 2.x, asegúrese de establecer la versión de
spring-cloud-azure-dependencies
en4.19.0
. Esta lista de materiales (BOM) debe configurarse en la sección<dependencyManagement>
del archivo pom.xml. Esto garantiza que todas las dependencias de Spring Cloud Azure usen la misma versión. Para obtener más información sobre la versión que se usa para esta lista de materiales, consulte Qué versión de Spring Cloud Azure debo usar.El artefacto de Spring Cloud Azure Storage Blob Starter:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-storage-blob</artifactId> </dependency>
Incorporación del código de la aplicación
Para cargar y leer archivos de blobs mediante Spring Cloud Azure Storage Blob Starter, configure la aplicación mediante los pasos siguientes.
Configure un nombre de cuenta de Storage y un punto de conexión en el archivo de configuración application.properties, como se muestra en el ejemplo siguiente.
spring.cloud.azure.storage.blob.account-name=${AZURE_STORAGE_ACCOUNT_NAME} spring.cloud.azure.storage.blob.endpoint=${AZURE_STORAGE_ACCOUNT_ENDPOINT}
Cree una nueva clase Java
BlobController
como se muestra en el ejemplo siguiente. Esta clase se usa para cargar y leer archivos del blob de contenedor en la cuenta de 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"; } }
Sugerencia
En este tutorial, no hay ninguna operación de autenticación en las configuraciones ni en el código. Sin embargo, la conexión a los servicios de Azure requiere autenticación. Para completar la autenticación, debe usar Azure Identity. Spring Cloud Azure usa
DefaultAzureCredential
, que la biblioteca de Azure Identity proporciona para ayudarle a obtener credenciales sin cambios en el código.DefaultAzureCredential
admite varios métodos de autenticación y determina qué método se usa en tiempo de ejecución. Este enfoque permite que la aplicación use diferentes métodos de autenticación en distintos entornos, como entornos locales o de producción, sin implementar código específico del entorno. Para obtener más información, vea DefaultAzureCredential.Para completar la autenticación en entornos de desarrollo local, puede usar la CLI de Azure, Visual Studio Code, PowerShell u otros métodos. Para obtener más información, consulte Autenticación de Azure en entornos de desarrollo de Java. Para completar la autenticación en entornos de hospedaje de Azure, se recomienda usar la identidad administrada asignada por el usuario. Para obtener más información, consulta ¿Qué son las identidades administradas para recursos de Azure?
Después de ejecutar la aplicación, use
curl
para probar la aplicación siguiendo estos pasos.Envíe una solicitud POST para actualizar el contenido de un archivo mediante el comando siguiente:
curl http://localhost:8080/blob/writeBlobFile -d "new message" -H "Content-Type: text/plain"
Debería ver una respuesta que indica
file was updated
.Envíe una solicitud GET para verificar el contenido de un archivo mediante el comando siguiente:
curl -X GET http://localhost:8080/blob/readBlobFile
Debería ver el texto "new message" (nuevo mensaje) que ha publicado.
Implementación en Azure Spring Apps
Ahora que tiene la aplicación Spring Boot que se ejecuta localmente, es el momento de moverla a producción. Azure Spring Apps facilita la implementación de aplicaciones de Spring Boot en Azure sin necesidad de realizar cambios en el código. El servicio administra la infraestructura de las aplicaciones de Spring, con el fin de que los desarrolladores puedan centrarse en el código. Azure Spring Apps proporciona administración del ciclo de vida mediante el uso de una supervisión y un diagnóstico completos, administración de la configuración, detección de servicios, integración de CI/CD e implementaciones azul-verde, entre otros. Para implementar la aplicación en Azure Spring Apps, consulte Implementación de la primera aplicación en Azure Spring Apps.
Pasos siguientes
Para más información acerca de Spring y Azure, vaya al centro de documentación de Azure.
Consulte también
Para obtener más información sobre Spring Boot Starters adicionales disponibles para Microsoft Azure, consulte ¿Qué es Spring Cloud Azure?
Para obtener más información acerca de otras API de almacenamiento de Azure que puede llamar desde aplicaciones de Spring Boot, consulte los artículos siguientes: