Exercice - Accéder à votre compte Batch à l’aide de la bibliothèque de client .NET

Effectué

Important

Vous avez besoin de votre propre abonnement Azure pour exécuter cet exercice et des frais pourraient vous être facturés. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.

L’API du client Azure Batch vous permet de contrôler programmatiquement la création, l’exécution et la supervision de toutes les ressources d’un compte Batch.

Dans cet exercice, nous allons créer une application console et la connecter au compte Azure Batch que nous avons créé précédemment à l’aide du package Microsoft.Azure.Batch NuGet. Pour tester le fonctionnement de cette configuration, nous allons interroger le compte Batch pour vérifier que ffmpeg a bien été ajouté au compte.

Créer une application console locale

Utilisez Cloud Shell pour suivre les exercices restants de ce module.

  1. Lancez Cloud Shell dans le portail Azure en sélectionnant l’icône Cloud Shell dans le menu supérieur du portail.

  2. Utilisez la liste déroulante en haut de la fenêtre Cloud Shell pour sélectionner Bash.

  3. Exécutez les commandes suivantes dans Cloud Shell pour créer un répertoire pour votre application :

    mkdir cutifypets
    cd cutifypets
    
  4. Créez l’application console .NET Core avec la commande dotnet new, puis exécutez-la :

    dotnet new console
    dotnet run
    

    Une fois l’application console créée, vous devez voir ce qui suit dans la console :

    Hello World!
    

Configurer les détails de connexion pour l’application

  1. Dans Cloud Shell, ajoutez le package NuGet Azure Batch à l’aide de la commande dotnet add package suivante :

    dotnet add package Microsoft.Azure.Batch
    
  2. Exécutez la commande suivante dans Cloud Shell pour enregistrer votre groupe de ressources dans une variable d’environnement afin de pouvoir l’utiliser dans les commandes suivantes. Remplacez [YOUR RESOURCE GROUP] par le nom du groupe de ressources que vous avez utilisé au moment de la création du compte Batch.

    export RESOURCE_GROUP=[YOUR RESOURCE GROUP]
    
  3. Utilisez les commandes suivantes pour stocker les informations d’identification du compte Batch dans des variables d’environnement accessibles via l’application console :

    export BATCH_URL='https://'$(az batch account list --query "[?contains(name,'cuti')].accountEndpoint" --output tsv)
    export BATCH_NAME=$(az batch account list --query "[?contains(name,'cuti')].name" --output tsv)
    export BATCH_KEY=$(az batch account keys list --name $BATCH_NAME --query primary -o tsv --resource-group $RESOURCE_GROUP)
    
  4. Utilisez la commande suivante pour vérifier que les valeurs stockées sont correctes :

    echo 'URL='$BATCH_URL 'NAME='$BATCH_NAME 'KEY='$BATCH_KEY
    

    Veillez à ce que ces valeurs soient définies. Si vous êtes amené à redémarrer Cloud Shell, vous devrez redéfinir ces variables.

  5. Utilisez le code suivant pour modifier le fichier Program.cs dans l’éditeur :

    code Program.cs
    
  6. Remplacez tout le code existant par ce qui suit :

    namespace cutifypets
    {
        using System;
        using Microsoft.Azure.Batch;
        using Microsoft.Azure.Batch.Auth;
        using Microsoft.Azure.Batch.Common;
    
        class Program
        {
            private const string envVarBatchURI = "BATCH_URL";
            private const string envVarBatchName = "BATCH_NAME";
            private const string envVarKey = "BATCH_KEY";
    
            private static string batchAccountName;
            private static string batchAccountUrl;
            private static string batchAccountKey;
    
            static void Main(string[] args)
            {
                // Read the environment variables to allow the app to connect to the Azure Batch account
                batchAccountUrl = Environment.GetEnvironmentVariable(envVarBatchURI);
                batchAccountName = Environment.GetEnvironmentVariable(envVarBatchName);
                batchAccountKey = Environment.GetEnvironmentVariable(envVarKey);
    
                // Show the user the batch the app is attaching to
                Console.WriteLine("URL: {0}, Name: {1}, Key: {2}", batchAccountUrl, batchAccountName, batchAccountKey);
    
                // The batch client requires a BatchSharedKeyCredentials object to open a connection
                var sharedKeyCredentials = new BatchSharedKeyCredentials(batchAccountUrl, batchAccountName, batchAccountKey);
                var batchClient = BatchClient.Open(sharedKeyCredentials);
    
                // The batchClient object can reference all the application packages, and get a summary of their details
                foreach (var app in batchClient.ApplicationOperations.ListApplicationSummaries() ) {
                    // For each application package, print to the console their name and version number
                    Console.WriteLine("Installed app: {0}({1})", app.Id, app.Versions[0]);
                }
            }
        }
    }
    

    Lisez le code et les commentaires précédents. L’application console importe la bibliothèque de client Microsoft.Azure.Batch pour ajouter des fonctionnalités Azure Batch. À l’aide des variables d’environnement que vous avez stockées lors des étapes précédentes, l’application ouvre une connexion au compte Batch que vous avez créé dans le portail Azure. Le client Batch peut ensuite interroger les propriétés des services dans le lot. L’exemple de code effectue une itération dans les packages d’application en présentant les détails de l’application ffmpeg que vous avez chargée.

  7. Dans l’éditeur de code, cliquez avec le bouton droit et sélectionnez Enregistrer, puis cliquez avec le bouton droit et sélectionnez Quitter.

  8. Dans Cloud Shell, compilez et exécutez l’application avec la commande suivante :

    dotnet run
    
  9. L’exécution de l’application écrit le package d’application dans la console. Vous devez obtenir le résultat suivant :

    Installed app: ffmpeg(3.4)
    

Félicitations ! Vous venez d’intégrer les bibliothèques Azure Batch et Stockage Azure dans votre application pour récupérer la liste des applications installées dans le compte Batch. L’étape suivante consiste à créer un pool de nœuds de calcul pour exécuter nos travaux.