Exercício – acessar sua conta do Lote usando a biblioteca de clientes do .NET

Concluído

Importante

É preciso ter uma assinatura do Azure para fazer esse exercício, e isso pode gerar encargos. Caso ainda não tenha uma assinatura do Azure, crie uma conta gratuita antes de começar.

A API de cliente do Lote do Azure permite que você controle programaticamente a criação, execução e monitoramento de todos os recursos em uma conta do Lote.

Neste exercício, criaremos um novo aplicativo de console e o conectaremos à conta do Lote do Azure criada anteriormente usando o pacote Microsoft.Azure.Batch NuGet. Para testar se essa configuração está funcionando, consultaremos a conta do Lote para verificar que ffmpeg foi adicionado corretamente à conta.

Criar um aplicativo de console local

Use o Cloud Shell para concluir os exercícios restantes neste módulo.

  1. Inicie o Cloud Shell no portal do Azure selecionando o ícone Cloud Shell no menu superior do portal.

  2. Use a lista suspensa na parte superior da janela do Cloud Shell para selecionar o Bash.

  3. Execute os comandos a seguir no Cloud Shell para criar um novo diretório para seu aplicativo:

    mkdir cutifypets
    cd cutifypets
    
  4. Crie um novo aplicativo de console do .NET Core com o comando dotnet new e execute-o:

    dotnet new console
    dotnet run
    

    Se tiver criado com êxito o aplicativo de console, você deverá ver o seguinte impresso no console:

    Hello World!
    

Configurar detalhes de conexão para o aplicativo

  1. No Cloud Shell, adicione o pacote do NuGet do Lote do Azure com o seguinte comando dotnet add package:

    dotnet add package Microsoft.Azure.Batch
    
  2. Execute o comando a seguir no Cloud Shell para salvar o grupo de recursos em uma variável de ambiente para que possamos usá-lo em comandos subsequentes. Substitua [YOUR RESOURCE GROUP] pelo nome do grupo de recursos que você usou ao criar a conta do Lote.

    export RESOURCE_GROUP=[YOUR RESOURCE GROUP]
    
  3. Use os seguintes comandos para armazenar as credenciais da conta em lote em variáveis de ambiente que podem ser acessadas por meio do aplicativo de 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. Use o seguinte comando para verificar se os valores armazenados estão corretos:

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

    Verifique se você tem esses valores definidos. Se precisar reiniciar o Cloud Shell em qualquer momento, você precisará definir essas variáveis novamente.

  5. Use o seguinte código para editar o arquivo Program.cs no editor:

    code Program.cs
    
  6. Substitua todo o código existente pelo seguinte:

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

    Leia o código e os comentários anteriores. O aplicativo de console importa a biblioteca de clientes Microsoft.Azure.Batch para adicionar recursos do Lote do Azure. Usando as variáveis de ambiente que você armazenou nas etapas anteriores, o aplicativo abre uma conexão à conta do Lote que você criou no portal do Azure. O cliente do Lote pode então consultar as propriedades dos serviços no Lote. O exemplo de código itera pelos pacotes de aplicativos, mostrando os detalhes do aplicativo ffmpeg que você carregou.

  7. No editor de código, clique com o botão direito do mouse e selecione Salvar e, em seguida, clique com o botão direito do mouse e selecione Encerrar.

  8. No Cloud Shell, compile e execute o aplicativo com o comando a seguir:

    dotnet run
    
  9. Executar o aplicativo grava o pacote de aplicativos no console. Você verá o seguinte resultado:

    Installed app: ffmpeg(3.4)
    

Parabéns! Você integrou com êxito o Lote do Azure e as bibliotecas do Armazenamento do Azure com o seu aplicativo para recuperar uma lista de aplicativos instalados na conta do Lote. A próxima etapa é criar um pool de nós de computação para executar nossos trabalhos.