Charger un fichier dans un Stockage Blob Azure

Ce tutoriel vous montre comment charger et lire à partir d’objets blob de conteneurs dans un compte Stockage Blob Azure à partir d’une application Spring Boot.

Le Stockage Blob Azure est la solution de stockage d’objets de Microsoft pour le cloud. Le stockage d’objets blob est optimisé pour stocker une grande quantité de données non structurées, telles que du texte ou des données binaires.

Prérequis

Remarque

Pour accorder à votre compte l’accès aux ressources, dans votre compte Stockage Azure nouvellement créé, attribuez le Storage Blob Data Contributor rôle au compte Microsoft Entra que vous utilisez actuellement. Pour plus d’informations, consultez Attribuer des rôles Azure en utilisant le portail Azure.

Important

Spring Boot version 2.5 ou ultérieure est nécessaire pour suivre les étapes décrites dans ce didacticiel.

Créez un conteneur.

Tout d’abord, créez un conteneur nommé testcontainer en suivant les instructions du guide de démarrage rapide : Charger, télécharger et répertorier des objets blob avec le Portail Azure.

Charger et lire des objets blob à partir de Stockage Azure conteneur de compte

Maintenant que vous disposez d’un compte et d’un conteneur Stockage Azure, vous pouvez charger et lire des fichiers à partir d’objets blob avec Spring Cloud Azure.

Pour installer le module Spring Cloud Stockage Azure Blob Starter, ajoutez les dépendances suivantes à votre fichier pom.xml :

  • The Spring Cloud Azure Bill of Materials (BOM) :

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.azure.spring</groupId>
          <artifactId>spring-cloud-azure-dependencies</artifactId>
          <version>5.10.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

    Remarque

    Si vous utilisez Spring Boot 2.x, veillez à définir la spring-cloud-azure-dependencies version 4.16.0sur . Cette facture de matériel (BOM) doit être configurée dans la <dependencyManagement> section de votre fichier pom.xml . Cela garantit que toutes les dépendances Azure Spring Cloud utilisent la même version. Pour plus d’informations sur la version utilisée pour ce boM, consultez La version de Spring Cloud Azure à utiliser.

  • Artefact Spring Cloud Stockage Azure Blob Starter :

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

Coder l’application

Pour charger et lire des fichiers à partir d’objets blob à l’aide du démarrage d’objets blob Spring Cloud Stockage Azure, configurez l’application en procédant comme suit.

  1. Configurez un nom de compte et un point de terminaison Stockage dans le fichier de configuration application.properties, comme illustré dans l’exemple suivant.

    spring.cloud.azure.storage.blob.account-name=${AZURE_STORAGE_ACCOUNT_NAME}
    spring.cloud.azure.storage.blob.endpoint=${AZURE_STORAGE_ACCOUNT_ENDPOINT}
    
  2. Créez une BlobController classe Java, comme illustré dans l’exemple suivant. Cette classe est utilisée pour charger et lire des fichiers à partir de l’objet blob de conteneur dans le compte Stockage 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";
        }
    }
    

    Conseil

    Dans ce tutoriel, il n’existe aucune opération d’authentification dans les configurations ou le code. Toutefois, la connexion aux services Azure nécessite une authentification. Pour effectuer l’authentification, vous devez utiliser Identité Azure. Spring Cloud Azure utilise DefaultAzureCredential, que la bibliothèque d’identités Azure fournit pour vous aider à obtenir des informations d’identification sans aucune modification du code.

    DefaultAzureCredential prend en charge plusieurs méthodes d’authentification et détermine quelle méthode doit être utilisée au moment de l’exécution. Cette approche permet à votre application d’utiliser différentes méthodes d’authentification dans différents environnements (tels que les environnements locaux et de production) sans implémenter de code spécifique à l’environnement. Pour plus d’informations, consultez DefaultAzureCredential.

    Pour terminer l’authentification dans les environnements de développement locaux, vous pouvez utiliser Azure CLI, Visual Studio Code, PowerShell ou d’autres méthodes. Pour plus d’informations, consultez l’authentification Azure dans les environnements de développement Java. Pour terminer l’authentification dans les environnements d’hébergement Azure, nous vous recommandons d’utiliser l’identité managée affectée par l’utilisateur. Pour plus d’informations, consultez Que sont les identités managées pour les ressources Azure ?

  3. Une fois votre application exécutée, utilisez-la curl pour tester votre application en suivant ces étapes.

    1. Envoyez une requête POST pour mettre à jour le contenu d’un fichier à l’aide de la commande suivante :

      curl http://localhost:8080/blob/writeBlobFile -d "new message" -H "Content-Type: text/plain"
      

      Vous devriez voir une réponse qui dit file was updated.

    2. Envoyez une requête GET pour vérifier le contenu du fichier à l’aide de la commande suivante :

      curl -X GET http://localhost:8080/blob/readBlobFile
      

      Vous devez voir le texte « new message » que vous avez publié.

Déployer sur Azure Spring Apps

Maintenant que vous disposez de l’application Spring Boot en cours d’exécution localement, il est temps de le déplacer en production. Azure Spring Apps facilite le déploiement d’applications Spring Boot sur Azure sans aucune modification de code. Le service gère l’infrastructure des applications Spring, ce qui permet aux développeurs de se concentrer sur leur code. Azure Spring Apps assure la gestion du cycle de vie en utilisant des outils complets, tels que la supervision et les diagnostics, la gestion des configurations, la découverte de services, l’intégration CI/CD, les déploiements bleus-verts, etc. Pour déployer votre application sur Azure Spring Apps, consultez Déployer votre première application sur Azure Spring Apps.

Étapes suivantes

Pour en savoir plus sur Spring et Azure, poursuivez vers le centre de documentation Spring sur Azure.

Voir aussi

Pour plus d’informations sur les autres starters Spring Boot disponibles pour Microsoft Azure, consultez Qu’est-ce que Spring Cloud Azure ?

Pour plus d’informations sur les API de stockage Azure supplémentaires que vous pouvez appeler à partir de vos applications Spring Boot, consultez les articles suivants :