Esercizio: Accedere all'account Batch usando la libreria client .NET

Completato

Importante

Per eseguire questo esercizio è necessario disporre di una propria sottoscrizione di Azure e questo potrebbe comportare dei costi. Se non hai ancora una sottoscrizione di Azure, crea un account gratuito prima di iniziare.

L'API client di Azure Batch consente di controllare a livello di codice la creazione, l'esecuzione e il monitoraggio di tutte le risorse in un account Batch.

In questo esercizio si creerà una nuova applicazione console, che sarà connessa all'account Azure Batch creato in precedenza tramite il pacchetto Microsoft.Azure.Batch NuGet. Per verificare il funzionamento dell'installazione, viene eseguita una query nell'account Batch per controllare che l'app ffmpeg sia stata aggiunta all'account.

Creare un'applicazione console locale

Usare Cloud Shell per completare gli esercizi rimanenti in questo modulo.

  1. Avviare Cloud Shell nel portale di Azure selezionando l'icona Cloud Shell nel menu in alto del portale.

  2. Usare l'elenco a discesa nella parte superiore della finestra di Cloud Shell per selezionare Bash.

  3. Eseguire i comandi seguenti in Cloud Shell per creare una nuova directory per l'app:

    mkdir cutifypets
    cd cutifypets
    
  4. Crea nuova applicazione console .NET Core con il comando dotnet new e quindi eseguirla:

    dotnet new console
    dotnet run
    

    Se l'app console è stata creata correttamente, la console visualizzerà il messaggio seguente:

    Hello World!
    

Configurare i dettagli di connessione per l'applicazione

  1. In Cloud Shell aggiungere il pacchetto NuGet di Azure Batch usando il comando dotnet add package seguente:

    dotnet add package Microsoft.Azure.Batch
    
  2. Eseguire il comando seguente in Cloud Shell per salvare il gruppo di risorse in una variabile di ambiente in modo che sia possibile usarlo in comandi successivi. Sostituire [YOUR RESOURCE GROUP] con il nome del gruppo di risorse usato durante la creazione dell'account Batch.

    export RESOURCE_GROUP=[YOUR RESOURCE GROUP]
    
  3. Usare i comandi seguenti per archiviare le credenziali dell'account Batch in variabili di ambiente alle quali si può accedere tramite l'app 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. Usare il comando seguente per verificare che i valori archiviati siano corretti:

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

    Assicurarsi che questi valori siano impostati. Se in qualsiasi momento è necessario riavviare Cloud Shell, verrà richiesto di impostare nuovamente queste variabili.

  5. Usare il codice seguente per modificare il file Program.cs nell'editor:

    code Program.cs
    
  6. Sostituire tutto il codice esistente con quello seguente:

    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]);
                }
            }
        }
    }
    

    Leggere il codice e i commenti precedenti. L'app console importa la libreria client Microsoft.Azure.Batch per aggiungere funzionalità di Azure Batch. Usando le variabili di ambiente archiviate nei passaggi precedenti, l'app apre una connessione all'account Batch che è stato creato nel portale di Azure. Il client Batch può quindi eseguire una query delle proprietà dei servizi nel batch. Il codice di esempio esegue l'iterazione dei pacchetti dell'applicazione, illustrando i dettagli dell'app FFmpeg caricata.

  7. Nell'editor di codice fare clic con il pulsante destro del mouse e scegliere Salva, quindi fare clic con il pulsante destro del mouse e scegliere Esci.

  8. Compilare ed eseguire l'app con il comando seguente in Cloud Shell:

    dotnet run
    
  9. L'esecuzione dell'app comporta la scrittura del pacchetto dell'applicazione nella console. Si dovrebbe ottenere il risultato seguente:

    Installed app: ffmpeg(3.4)
    

Complimenti. Le librerie di Azure Batch e Archiviazione di Azure sono state integrate nell'app per recuperare un elenco delle applicazioni installate nell'account Batch. Il passaggio successivo consiste nel creare un pool di nodi di calcolo per eseguire i processi.