Partilhar via


Gerir contas e quotas do Batch com a biblioteca de cliente de Gestão do Batch para .NET

Você pode reduzir a sobrecarga de manutenção em seus aplicativos do Lote do Azure usando a biblioteca .NET do Gerenciamento de Lotes para automatizar a criação, exclusão, gerenciamento de chaves e descoberta de cotas de contas em lote.

  • Crie e exclua contas em lote em qualquer região. Se, como um fornecedor independente de software (ISV), por exemplo, você fornecer um serviço para seus clientes no qual cada um recebe uma conta de lote separada para fins de faturamento, você pode adicionar recursos de criação e exclusão de conta ao seu portal do cliente.
  • Recupere e regenere chaves de conta programaticamente para qualquer uma das suas contas Batch. Isso pode ajudá-lo a cumprir as políticas de segurança que impõem a substituição periódica ou a expiração das chaves de conta. Quando você tem várias contas de lote em várias regiões do Azure, a automação desse processo de substituição aumenta a eficiência da sua solução.
  • Verifique as cotas de contas e elimine as suposições de tentativa e erro para determinar quais contas de lote têm quais limites. Ao verificar suas cotas de conta antes de iniciar trabalhos, criar pools ou adicionar nós de computação, você pode ajustar proativamente onde ou quando esses recursos de computação são criados. Você pode determinar quais contas exigem aumentos de cota antes de alocar recursos adicionais nessas contas.
  • Combine recursos de outros serviços do Azure para uma experiência de gerenciamento completa usando o Batch Management .NET, o Microsoft Entra ID e o Azure Resource Manager juntos no mesmo aplicativo. Usando esses recursos e suas APIs, você pode fornecer uma experiência de autenticação sem atritos, a capacidade de criar e excluir grupos de recursos e os recursos descritos acima para uma solução de gerenciamento de ponta a ponta.

Nota

Embora este artigo se concentre no gerenciamento programático de suas contas, chaves e cotas em lote, você também pode executar muitas dessas atividades usando o portal do Azure.

Criar e excluir contas em lote

Um dos principais recursos da API de Gerenciamento de Lotes é criar e excluir contas de Lote em uma região do Azure. Para fazer isso, use BatchAccountCollection.CreateOrUpdate e Delete ou suas contrapartes assíncronas.

O trecho de código a seguir cria uma conta, obtém a conta recém-criada do serviço Batch e a exclui.

 string subscriptionId = "Your SubscriptionID";
 string resourceGroupName = "Your ResourceGroup name";

 var credential = new DefaultAzureCredential();
 ArmClient _armClient = new ArmClient(credential);

 ResourceIdentifier resourceGroupResourceId = ResourceGroupResource.CreateResourceIdentifier(subscriptionId, resourceGroupName);
 ResourceGroupResource resourceGroupResource = _armClient.GetResourceGroupResource(resourceGroupResourceId);

 var data = new BatchAccountCreateOrUpdateContent(AzureLocation.EastUS);

 // Create a new batch account
 resourceGroupResource.GetBatchAccounts().CreateOrUpdate(WaitUntil.Completed, "Your BatchAccount name", data);
 
 // Get an existing batch account
 BatchAccountResource batchAccount = resourceGroupResource.GetBatchAccount("Your BatchAccount name");

 // Delete the batch account
 batchAccount.Delete(WaitUntil.Completed);

Nota

Os aplicativos que usam a biblioteca .NET do Batch Management exigem acesso de administrador de serviço ou coadministrador à assinatura que possui a conta Batch a ser gerenciada. Para obter mais informações, consulte a seção ID do Microsoft Entra e o exemplo de código AccountManagement .

Recuperar e regenerar chaves de conta

Obtenha chaves de conta primárias e secundárias de qualquer conta Batch dentro da sua assinatura usando GetKeys. Você pode regenerar essas chaves usando RegenerateKey.

string subscriptionId = "Your SubscriptionID";
string resourceGroupName = "Your ResourceGroup name";

var credential = new DefaultAzureCredential();
ArmClient _armClient = new ArmClient(credential);

ResourceIdentifier resourceGroupResourceId = ResourceGroupResource.CreateResourceIdentifier(subscriptionId, resourceGroupName);
ResourceGroupResource resourceGroupResource = _armClient.GetResourceGroupResource(resourceGroupResourceId);

var data = new BatchAccountCreateOrUpdateContent(AzureLocation.EastUS);

// Get an existing batch account
BatchAccountResource batchAccount = resourceGroupResource.GetBatchAccount("Your BatchAccount name");

// Get and print the primary and secondary keys
BatchAccountKeys accountKeys = batchAccount.GetKeys();

Console.WriteLine("Primary key:   {0}", accountKeys.Primary);
Console.WriteLine("Secondary key: {0}", accountKeys.Secondary);

// Regenerate the primary key
BatchAccountRegenerateKeyContent regenerateKeyContent = new BatchAccountRegenerateKeyContent(BatchAccountKeyType.Primary);
batchAccount.RegenerateKey(regenerateKeyContent);

Gorjeta

Você pode criar um fluxo de trabalho de conexão simplificado para seus aplicativos de gerenciamento. Primeiro, obtenha uma chave de conta para a conta Batch que você deseja gerenciar com GetKeys. Em seguida, use essa chave ao inicializar a classe BatchSharedKeyCredentials da biblioteca Batch .NET, que é usada ao inicializar BatchClient.

Verificar a subscrição do Azure e as quotas da conta em lote

As assinaturas do Azure e os serviços individuais do Azure, como o Batch, têm cotas padrão que limitam o número de determinadas entidades dentro delas. Para obter as cotas padrão para assinaturas do Azure, consulte Limites de assinatura, cotas e restrições de serviço e assinatura do Azure. Para obter as cotas padrão do serviço em lote, consulte Cotas e limites para o serviço de lote do Azure. Usando a biblioteca .NET do Batch Management, você pode verificar essas cotas em seus aplicativos. Isso permite que você tome decisões de alocação antes de adicionar contas ou recursos de computação, como pools e nós de computação.

Verificar uma subscrição do Azure para quotas de conta em lote

Antes de criar uma conta em lote em uma região, você pode verificar sua assinatura do Azure para ver se é possível adicionar uma conta nessa região.

No trecho de código abaixo, primeiro usamos GetBatchAccounts para obter uma coleção de todas as contas Batch que estão dentro de uma assinatura. Depois de obter essa coleção, determinamos quantas contas estão na região de destino. Em seguida, usamos GetBatchQuotas para obter a cota da conta Batch e determinar quantas contas (se houver) podem ser criadas nessa região.

string subscriptionId = "Your SubscriptionID";
ArmClient _armClient = new ArmClient(new DefaultAzureCredential());

ResourceIdentifier subscriptionResourceId = SubscriptionResource.CreateResourceIdentifier(subscriptionId);
SubscriptionResource subscriptionResource = _armClient.GetSubscriptionResource(subscriptionResourceId);

// Get a collection of all Batch accounts within the subscription
var batchAccounts = subscriptionResource.GetBatchAccounts();
Console.WriteLine("Total number of Batch accounts under subscription id {0}:  {1}", subscriptionId, batchAccounts.Count());

// Get a count of all accounts within the target region
string region = "eastus";
int accountsInRegion = batchAccounts.Count(o => o.Data.Location == region);

// Get the account quota for the specified region
BatchLocationQuota batchLocationQuota = subscriptionResource.GetBatchQuotas(AzureLocation.EastUS);
Console.WriteLine("Account quota for {0} region: {1}", region, batchLocationQuota.AccountQuota);

// Determine how many accounts can be created in the target region
Console.WriteLine("Accounts in {0}: {1}", region, accountsInRegion);
Console.WriteLine("You can create {0} accounts in the {1} region.", batchLocationQuota.AccountQuota - accountsInRegion, region);

No trecho acima, creds é uma instância de TokenCredentials. Para ver um exemplo de criação desse objeto, consulte o exemplo de código AccountManagement no GitHub.

Verificar uma conta de lote para cotas de recursos de computação

Antes de aumentar os recursos de computação em sua solução em lote, você pode verificar se os recursos que deseja alocar não excederão as cotas da conta. No trecho de código abaixo, imprimimos as informações de cota para a conta de lote chamada mybatchaccount. Em seu próprio aplicativo, você pode usar essas informações para determinar se a conta pode lidar com os recursos adicionais a serem criados.

string subscriptionId = "Your SubscriptionID";
string resourceGroupName = "Your ResourceGroup name";

var credential = new DefaultAzureCredential();
ArmClient _armClient = new ArmClient(credential);

ResourceIdentifier resourceGroupResourceId = ResourceGroupResource.CreateResourceIdentifier(subscriptionId, resourceGroupName);
ResourceGroupResource resourceGroupResource = _armClient.GetResourceGroupResource(resourceGroupResourceId);

// Get an existing batch account
BatchAccountResource batchAccount = resourceGroupResource.GetBatchAccount("Your BatchAccount name");

// Now print the compute resource quotas for the account
Console.WriteLine("Core quota: {0}", batchAccount.Data.DedicatedCoreQuota);
Console.WriteLine("Pool quota: {0}", batchAccount.Data.PoolQuota);
Console.WriteLine("Active job and job schedule quota: {0}", batchAccount.Data.ActiveJobAndJobScheduleQuota);

Importante

Embora existam cotas padrão para assinaturas e serviços do Azure, muitos desses limites podem ser aumentados solicitando um aumento de cota no portal do Azure.

Usar o Microsoft Entra ID com o Batch Management .NET

A biblioteca .NET do Batch Management é um cliente do provedor de recursos do Azure e é usada junto com o Azure Resource Manager para gerenciar recursos de conta programaticamente. A ID do Microsoft Entra é necessária para autenticar solicitações feitas por meio de qualquer cliente de provedor de recursos do Azure, incluindo a biblioteca .NET de Gerenciamento de Lotes, e por meio do Gerenciador de Recursos do Azure. Para obter informações sobre como usar o Microsoft Entra ID com a biblioteca .NET do Batch Management, consulte Usar o Microsoft Entra ID para autenticar soluções em lote.

Projeto de exemplo no GitHub

Para ver o Batch Management .NET em ação, confira o projeto de exemplo AccountManagement no GitHub. O aplicativo de exemplo AccountManagement demonstra as seguintes operações:

  1. Adquira um token de segurança do Microsoft Entra ID usando Adquirir e armazenar tokens de cache usando a Biblioteca de Autenticação da Microsoft (MSAL). Se o usuário ainda não estiver conectado, ele será solicitado a fornecer suas credenciais do Azure.
  2. Com o token de segurança obtido do Microsoft Entra ID, crie um SubscriptionClient para consultar o Azure para obter uma lista de assinaturas associadas à conta. O usuário pode selecionar uma assinatura na lista se ela contiver mais de uma assinatura.
  3. Obtenha credenciais associadas à assinatura selecionada.
  4. Crie um objeto ResourceManagementClient usando as credenciais.
  5. Use um objeto ResourceManagementClient para criar um grupo de recursos.
  6. Use um objeto BatchManagementClient para executar várias operações de conta de lote:
    • Crie uma conta de lote no novo grupo de recursos.
    • Obtenha a conta recém-criada do serviço Batch.
    • Imprima as chaves da conta para a nova conta.
    • Regenere uma nova chave primária para a conta.
    • Imprima as informações da cota da conta.
    • Imprima as informações de cota da assinatura.
    • Imprima todas as contas dentro da assinatura.
    • Exclua a conta recém-criada.
  7. Exclua o grupo de recursos.

Para executar o aplicativo de exemplo com êxito, você deve primeiro registrá-lo com seu locatário do Microsoft Entra no portal do Azure e conceder permissões à API do Azure Resource Manager. Siga as etapas fornecidas em Autenticar soluções de gerenciamento de lote com o Ative Directory.

Próximos passos

  • Saiba mais sobre o fluxo de trabalho do serviço em lote e os recursos primários, como pools, nós, trabalhos e tarefas.
  • Aprenda os conceitos básicos de programação de uma aplicação compatível com o Batch ao utilizar a biblioteca de cliente .NET do Batch ou Python. Estes guias de início rápido guiam você por um aplicativo de exemplo que usa o serviço Batch para executar uma carga de trabalho em vários nós de computação, usando o Armazenamento do Azure para preparo e recuperação de arquivos de carga de trabalho.