Exercice - Connecter votre application à votre compte de stockage Azure
La bibliothèque cliente de stockage Azure fournit un modèle objet qui permet d’interagir avec les comptes de stockage Azure. Elle permet de se connecter rapidement à un compte de Stockage Azure et d’utiliser les API du service Stockage Azure.
Modèle objet de la bibliothèque de client Stockage Azure
Un compte de stockage dans Azure est organisé en un ou plusieurs conteneurs qui stockent les objets blob (fichiers) réels dans votre compte. Ces conteneurs s’apparentent aux dossiers dans un système de fichiers. Nous pouvons utiliser la bibliothèque de client du stockage d’objets blob pour .NET afin de créer un conteneur dans notre compte de stockage pour y stocker nos photos.
Pour utiliser la bibliothèque de client Azure Storage Blob pour .NET dans votre programme, vous devez ajouter une instruction using
en haut de votre programme pour l’espace de noms Azure.Storage.Blobs
.
Ajoutez la commande suivante à Program.cs.
using Azure.Storage.Blobs;
Pour créer et gérer des conteneurs dans votre compte de stockage à partir de votre application .NET, vous utilisez un objet
BlobContainerClient
. Pour instancier un objetBlobContainerClient
, vous devez fournir la chaîne de connexion à votre compte de stockage et le nom du conteneur. Le nom du conteneur doit comprendre entre 3 et 63 caractères et peut contenir uniquement des lettres minuscules, des chiffres et un tiret (-). Pour cette application, nous utiliserons le nom photos.Ajoutez le code suivant à la section Main de votre application pour obtenir la chaîne de connexion du Stockage Azure et créer l’objet
BlobContainerClient
.var connectionString = configuration.GetConnectionString("StorageAccount"); string containerName = "photos"; BlobContainerClient container = new BlobContainerClient(connectionString, containerName);
Notes
À ce stade, la bibliothèque de client n’a pas tenté de se connecter à Azure ou de valider la chaîne de connexion et la clé d’accès utilisées. Elle a simplement construit un objet client léger utilisé pour effectuer des opérations sur le stockage d’objets blob Azure. Un appel réseau sera effectué uniquement lorsqu’une opération est appelée sur le compte de stockage.
Juste en dessous des lignes précédentes, ajoutez du code pour créer le conteneur photos dans lequel nous stockerons nos images.
container.CreateIfNotExists();
Enregistrez votre fichier.
Exécutez maintenant l’application pour qu’elle crée le conteneur dans le compte de stockage. Comme nous avons utilisé la méthode
CreateIfNotExists
, vous pouvez exécuter votre programme plusieurs fois, mais le conteneur sera créé uniquement à la première exécution.dotnet run
Vous pouvez vérifier que vous avez créé le conteneur en exécutant la commande Azure CLI suivante. N’oubliez pas de remplacer
<name>
par le nom de votre compte de stockage.az storage container list \ --account-name <name>
La bibliothèque de client du stockage d’objets blob pour JavaScript contient de nombreux objets clients permettant d’interagir avec les objets blob du stockage Azure. L’objet BlobServiceClient
est situé en haut de cette hiérarchie. Pour utiliser cet objet dans votre code JavaScript :
Ouvrez votre fichier index.js dans l’éditeur de code et ajoutez l’instruction suivante tout de suite après l’instruction
require('dotenv').config();
:const { BlobServiceClient } = require("@azure/storage-blob");
Vous devez maintenant créer un objet
BlobServiceClient
dans votre code : obtenez la chaîne de connexion du compte de stockage et passez-la à la méthode de fabriquefromConnectionString
sur l’objetBlobServiceClient
. Pour cela, ajoutez les lignes de code suivantes :const storageAccountConnectionString = process.env.AZURE_STORAGE_CONNECTION_STRING; const blobServiceClient = BlobServiceClient.fromConnectionString(storageAccountConnectionString);
Remarque
La bibliothèque de client ne tente pas de se connecter à Azure tant qu’aucune opération qui en a besoin n’est appelée. L’objet client est un objet léger permettant d’accéder au stockage Blob Azure ; il ne valide pas la connexion ou la clé d’accès utilisée.
Après avoir défini un objet client dans votre programme, vous pouvez utiliser des méthodes sur cet objet client pour effectuer le travail réel. Les méthodes qui effectuent les appels réseau sont intentionnellement asynchrones. La bibliothèque utilise des promesses pour retourner des résultats asynchrones. Pour cette raison, vous devez marquer votre fonction main comme étant asynchrone. Remplacez l’objet de fonction main par le code suivant. La ligne qui commence par deux barres obliques est un commentaire.
async function main() { // Function code here }
Enregistrez les changements dans index.js.
Ajoutons maintenant du code pour exécuter une opération sur notre compte de stockage. Un compte de stockage est organisé en un ou plusieurs conteneurs qui agissent comme des dossiers dans votre compte de stockage. Les objets blob (fichiers) que vous créez dans votre compte de stockage sont stockés dans l’un de ces conteneurs. Vous devez créer un conteneur dans votre compte de stockage pour y stocker vos photos.
Le nom du conteneur doit comprendre entre 3 et 63 caractères et peut contenir uniquement des lettres minuscules, des chiffres et un tiret (-). Pour cette application, nous utiliserons le nom photos.
Pour créer un conteneur dans votre compte de stockage, vous devez obtenir un objet
ContainerClient
qui représente le conteneur dans le compte de stockage. Même si nous n’avons pas encore de conteneur dans notre compte de stockage, nous pouvons utiliserContainerClient
pour créer le conteneur et le gérer une fois qu’il a été créé.Pour obtenir l’objet
ContainerClient
, appelez la méthodegetContainerClient
sur l’objetBlobServiceClient
, puis fournissez le nom du conteneur sous la forme d’un paramètre. Ensuite, pour créer le conteneur dans votre compte de stockage Azure, utilisez la méthodecreateIfNotExists
sur l’objet containerClient. Remplacez la ligne de commentaire// Function Code here
par ces instructions :// Create a container (folder) if it does not exist const containerName = 'photos'; const containerClient = blobServiceClient.getContainerClient(containerName); const containerExists = await containerClient.exists() if ( !containerExists) { const createContainerResponse = await containerClient.createIfNotExists(); console.log(`Create container ${containerName} successfully`, createContainerResponse.succeeded); } else { console.log(`Container ${containerName} already exists`); }
Enregistrez les changements effectués dans le fichier index.js.
Dans la ligne de commande Cloud Shell, entrez la commande suivante pour générer et exécuter votre programme, ce qui crée le conteneur dans votre compte de stockage :
node index.js
Conseil
Si vous obtenez une erreur sur l’utilisation du mot clé
await
, vérifiez que vous avez ajouté le mot cléasync
à la définition de fonctionmain
conformément à la dernière étape des instructions précédentes.La première fois que vous exécutez le programme, vous devez voir un message indiquant que le conteneur a été créé, avec l’état True. La deuxième fois consécutive que vous exécutez votre programme, vous voyez un message similaire avec l’état False car le conteneur existe déjà.
Vous pouvez vérifier que vous avez créé le conteneur en exécutant la commande Azure CLI suivante. N’oubliez pas de remplacer
<name>
par le nom de votre compte de stockage.az storage container list \ --account-name <name>
Maintenant que notre programme se connecte à notre compte de stockage Azure et que nous avons créé un conteneur photos, nous allons y charger une image.