Télécharger un fichier dans un Azure Blob Storage
Ce tutoriel vous montre comment télécharger et lire des blobs dans un conteneur d'un compte Azure Blob Storage à partir d'une application Spring Boot.
Le Stockage Blob Azure est la solution de stockage d’objets de Microsoft pour le cloud. Le stockage Blob est optimisé pour stocker une grande quantité de données non structurées, telles que des fichiers texte ou des données binaires.
Prérequis
- Un abonnement Azure - En créer un gratuitement
- Java Development Kit (JDK) version 8 ou supérieure.
- Apache Maven, version 3.0 ou supérieure.
- cURL ou un utilitaire HTTP similaire pour tester la fonctionnalité.
- Un compte de stockage Azure et un conteneur. Si vous n’en avez pas, créez un compte de stockage.
- Une application Spring Boot. Si vous n’en avez pas, créez un projet Maven avec Spring Initializr. Veillez à sélectionner Projet Maven et, sous Dépendances, ajoutez la dépendance Spring Web, puis sélectionnez Java version 8 ou ultérieure.
Remarque
Pour accorder à votre compte l'accès aux ressources, dans votre compte Azure Storage nouvellement créé, attribuez le rôle Storage Blob Data Contributor
au compte Microsoft Entra que vous utilisez actuellement. Pour plus d’informations, consultez Attribuer des rôles Azure en utilisant le portail Azure.
Important
La version 2.5 ou supérieure de Spring Boot est nécessaire pour réaliser les étapes de ce tutoriel.
Créez un conteneur.
Tout d'abord, créez un conteneur nommé testcontainer
en suivant les instructions de Démarrage rapide : Chargez, téléchargez et répertoriez des blobs avec le portail Azure..
Télécharger et lire des blobs depuis un conteneur du compte de stockage Azure
Maintenant que vous avez un compte de stockage Azure et un conteneur, vous pouvez télécharger et lire des fichiers depuis des blobs avec Spring Cloud Azure.
Pour installer le module Spring Cloud Azure Storage Blob Starter, ajoutez les dépendances suivantes à votre fichier pom.xml :
La nomenclature Spring Cloud Azure :
<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>
Remarque
Si vous utilisez Spring Boot 2.x, assurez-vous de définir la version
spring-cloud-azure-dependencies
sur4.19.0
. Cette nomenclature doit être configurée dans la section<dependencyManagement>
de votre fichier pom.xml. Cela permet de s'assurer que toutes les dépendances de Spring Cloud Azure utilisent la même version. Pour plus d'informations sur la version utilisée pour cette nomenclature, consultez Quelle version de Spring Cloud Azure dois-je utiliser.Le module Spring Cloud Azure Storage Blob Starter :
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-storage-blob</artifactId> </dependency>
Coder l’application
Pour télécharger et lire des fichiers depuis des blobs en utilisant le starter Spring Cloud Azure Storage Blob, configurez l'application en suivant les étapes suivantes.
Configurez un nom de compte de stockage et un point de terminaison dans le fichier de configuration application.properties, comme indiqué 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}
Créez une nouvelle classe Java
BlobController
comme indiqué dans l'exemple suivant. Cette classe permet de télécharger et de lire des fichiers depuis un blob de conteneur dans le compte de 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'y a pas d'opérations d'authentification dans les configurations ou le code. Cependant, 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 Azure Identity fournit pour vous aider à obtenir des informations d'identification sans modifier le 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 réaliser 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 la section Authentification Azure dans les environnements de développement Java. Pour compléter l'authentification dans les environnements d'hébergement Azure, nous vous recommandons d'utiliser l'identité gérée attribuée à l'utilisateur. Pour plus d’informations, consultez Que sont les identités managées pour les ressources Azure ?
Une fois que votre application fonctionne, utilisez
curl
pour tester votre application en suivant les étapes suivantes.Envoyez une requête POST pour mettre à jour le contenu d’un fichier en utilisant la commande suivante :
curl http://localhost:8080/blob/writeBlobFile -d "new message" -H "Content-Type: text/plain"
Vous devez obtenir la réponse suivante :
file was updated
.Envoyez une requête GET pour vérifier le contenu du fichier en utilisant 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 l'application Spring Boot fonctionne localement, il est temps de la mettre en production. Azure Spring Apps facilite le déploiement des applications Spring Boot sur Azure sans aucune modification du 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, voir 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 instances Spring Boot Starters supplémentaires disponibles pour Microsoft Azure, consultez Qu'est-ce que Spring Cloud Azure?
Pour plus de détails sur les API Azure Storage supplémentaires pouvant être appelées à partir de vos applications Spring Boot, consultez les articles suivants :