Exercício – aceder à conta do Batch com a biblioteca de cliente do .NET
Importante
Precisa da sua própria subscrição do Azure para executar este exercício e poderá incorrer em custos. Se ainda não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.
A API de cliente do Azure Batch permite controlar programaticamente a criação, execução e monitoramento de todos os recursos em uma conta Batch.
Neste exercício, criaremos um novo aplicativo de console e o conectaremos à conta do Lote do Azure que criamos anteriormente usando o Microsoft.Azure.Batch NuGet
pacote. Para testar se essa configuração está funcionando, consultaremos a conta do Batch para verificar se o ffmpeg foi adicionado corretamente à conta.
Criar uma aplicação de consola local
Use o Cloud Shell para concluir os exercícios restantes neste módulo.
Inicie o Cloud Shell no portal do Azure selecionando o ícone do Cloud Shell no menu superior do portal.
Use a lista suspensa na parte superior da janela do Cloud Shell para selecionar Bash.
Execute os seguintes comandos no Cloud Shell para criar um novo diretório para a sua aplicação:
mkdir cutifypets cd cutifypets
Crie um novo aplicativo de console .NET Core com o
dotnet new
comando e execute-o:dotnet new console dotnet run
Se tiver criado com êxito a aplicação da consola, deverá ver o seguinte impresso na consola:
Hello World!
Configurar detalhes de ligação da aplicação
No Cloud Shell, adicione o pacote NuGet do Azure Batch com o seguinte comando
dotnet add package
:dotnet add package Microsoft.Azure.Batch
Execute o seguinte comando no Cloud Shell para guardar o seu grupo de recursos numa variável de ambiente para que possamos utilizá-lo em comandos subsequentes. Substitua
[YOUR RESOURCE GROUP]
pelo nome do grupo de recursos usado ao criar a conta de lote.export RESOURCE_GROUP=[YOUR RESOURCE GROUP]
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)
Use o seguinte comando para verificar se os valores armazenados estão corretos:
echo 'URL='$BATCH_URL 'NAME='$BATCH_NAME 'KEY='$BATCH_KEY
Certifique-se de que tem estes valores definidos. Se você precisar reiniciar o Cloud Shell a qualquer momento, precisará definir essas variáveis novamente.
Use o seguinte código para editar o
Program.cs
arquivo no editor:code Program.cs
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 do
Microsoft.Azure.Batch
cliente para adicionar recursos do Lote do Azure. Com as variáveis de ambiente que armazenou nos passos anteriores, a aplicação abre uma ligação para a conta do Batch que criou no portal do Azure. Em seguida, o cliente do Batch pode consultar as propriedades dos serviços no Batch. O código de exemplo percorre os pacotes de aplicações e mostra os detalhes da aplicação ffmpeg que carregou.No editor de códigos, clique com o botão direito do mouse e selecione Salvar, clique com o botão direito do mouse e selecione Sair.
No Cloud Shell, compile e execute o aplicativo com o seguinte comando:
dotnet run
A execução do aplicativo grava o pacote do aplicativo no console. Você deve obter o seguinte resultado:
Installed app: ffmpeg(3.4)
Parabéns! Integrou com êxito as bibliotecas do Azure Batch e do Armazenamento do Azure na sua aplicação para recuperar uma lista de aplicações instaladas na conta do Batch. O próximo passo é criar um conjunto de nós de computação para executar os nossos trabalhos.