Ejercicio: Acceso a la cuenta de Batch mediante la biblioteca cliente de .NET

Completado

Importante

Para realizar este ejercicio, se necesita una suscripción de Azure propia y puede que se apliquen cargos. Si aún no tiene una suscripción de Azure, cree una cuenta gratuita antes de comenzar.

La API de cliente de Azure Batch permite controlar mediante programación la creación, ejecución y supervisión de todos los recursos de una cuenta de Batch.

En este ejercicio, crearemos una nueva aplicación de consola y la conectaremos a la cuenta de Azure Batch que creamos anteriormente mediante el paquete de Microsoft.Azure.Batch NuGet. Para probar el funcionamiento de esta configuración, se consultará la cuenta de Batch para comprobar que ffmpeg se ha agregado correctamente a la cuenta.

Creación de una aplicación de consola local

Use Cloud Shell para completar los ejercicios restantes de este módulo.

  1. Inicie Cloud Shell en Azure Portal; para ello, seleccione el icono de Cloud Shell en el menú superior del portal.

  2. Use la lista desplegable de la parte superior de la ventana de Cloud Shell para seleccionar Bash.

  3. Ejecute los comandos siguientes en Cloud Shell para crear un directorio para la aplicación:

    mkdir cutifypets
    cd cutifypets
    
  4. Cree una aplicación de consola de .NET Core con el comando dotnet new y, a continuación, ejecútela:

    dotnet new console
    dotnet run
    

    Si ha creado correctamente la aplicación de consola, debería ver lo siguiente impreso en la consola:

    Hello World!
    

Configuración de los detalles de conexión para la aplicación

  1. En Cloud Shell, agregue el paquete NuGet de Azure Batch con el comando dotnet add package siguiente:

    dotnet add package Microsoft.Azure.Batch
    
  2. Ejecute el comando siguiente en Cloud Shell para guardar el grupo de recursos en una variable de entorno con el fin de usarla en comandos posteriores. Reemplace [YOUR RESOURCE GROUP] por el nombre del grupo de recursos que usó al crear la cuenta de Batch.

    export RESOURCE_GROUP=[YOUR RESOURCE GROUP]
    
  3. Use los siguientes comandos para almacenar las credenciales de la cuenta de Batch en variables de entorno a las que se puede acceder a través de la aplicación de consola:

    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. Use el siguiente comando para comprobar que los valores almacenados son correctos:

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

    Asegúrese de que tiene estos valores establecidos. Si tiene que reiniciar Cloud Shell en cualquier momento, tendrá que volver a establecer estas variables.

  5. Use el código siguiente para editar el archivo Program.cs en el editor:

    code Program.cs
    
  6. Reemplace todo el código existente por lo siguiente:

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

    Lea el código y los comentarios anteriores. La aplicación de consola importa la biblioteca cliente de Microsoft.Azure.Batch para agregar características de Azure Batch. Mediante las variables de entorno que se han almacenado en los pasos anteriores, la aplicación abre una conexión a la cuenta de Batch que ha creado en Azure Portal. Después, el cliente de Batch puede consultar propiedades de los servicios en el lote. El código de ejemplo recorre en iteración los paquetes de aplicación, y muestra los detalles de la aplicación ffmpeg que ha cargado.

  7. En el editor de código, haga clic con el botón derecho y seleccione Guardar, después haga clic con el botón derecho y seleccione Salir.

  8. En Cloud Shell, compile y ejecute la aplicación con el comando siguiente:

    dotnet run
    
  9. Al ejecutar la aplicación, el paquete de aplicación se escribe en la consola. Obtendrá el siguiente resultado:

    Installed app: ffmpeg(3.4)
    

Felicidades. Ha integrado correctamente las bibliotecas de Azure Batch y Azure Storage en la aplicación para recuperar una lista de aplicaciones instaladas en la cuenta de Batch. El siguiente paso consiste en crear un grupo de nodos de proceso para ejecutar los trabajos.