Exercice - Connecter votre application à votre compte de stockage Azure

Effectué

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.

  1. 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 objet BlobContainerClient, 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.

  2. 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.

  3. 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();
    
  4. Enregistrez votre fichier.

  5. 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
    
  6. 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 :

  1. 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");
    
  2. 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 fabrique fromConnectionString sur l’objet BlobServiceClient. 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.

  3. 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
    }
    
  4. 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 utiliser ContainerClient pour créer le conteneur et le gérer une fois qu’il a été créé.

  5. Pour obtenir l’objet ContainerClient, appelez la méthode getContainerClient sur l’objet BlobServiceClient, 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éthode createIfNotExists 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`);
    }
    
  6. Enregistrez les changements effectués dans le fichier index.js.

  7. 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 fonction main 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à.

  8. 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.