Carga de un archivo en 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 almacenar una gran cantidad de datos no estructurados, como texto o datos binarios.

Requisitos previos

Nota:

Para conceder a la cuenta acceso a los recursos, en la cuenta de Azure Storage recién creada, asigne el Storage Blob Data Contributor rol 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 requiere Spring Boot versión 2.5 o posterior para completar los pasos de este tutorial.

Crear 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 cuentas 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.11.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

    Nota:

    Si usa Spring Boot 2.x, asegúrese de establecer la spring-cloud-azure-dependencies versión 4.17.0en . Esta lista de materiales (BOM) debe configurarse en la <dependencyManagement> sección del archivo pom.xml . Esto garantiza que todas las dependencias de Azure de Spring Cloud usen la misma versión. Para obtener más información sobre la versión que se usa para esta lista de materiales, consulte La versión de Spring Cloud que se debe usar en Azure.

  • El artefacto 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.

  1. Configure un nombre de cuenta de almacenamiento 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}
    
  2. Cree una nueva BlobController clase java 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 identidades de Azure 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 a la aplicación usar diferentes métodos de autenticación en distintos entornos (como entornos locales y 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 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, consulte ¿Qué son las identidades administradas para recursos de Azure?

  3. Después de ejecutar la aplicación, siga curl estos pasos para probar la aplicación.

    1. 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 diga file was updated.

    2. Envíe una solicitud GET para comprobar el contenido del 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 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 más información sobre los inicios de Spring Boot adicionales que están disponibles para Microsoft Azure, consulte ¿Qué es Spring Cloud Azure?

Para más información sobre las API de Azure Storage adicionales a las que puede llamar desde las aplicaciones de Spring Boot, consulte los siguientes artículos: