Gerenciar contas e cotas do Lote com a biblioteca de clientes do Gerenciamento de Lotes para .NET
É possível diminuir a sobrecarga de manutenção em seus aplicativos do Lote do Azure usando a biblioteca do Batch Management .NET para automatizar a criação, a exclusão, o gerenciamento de chaves e a descoberta de cotas da conta do Lote.
- Criar e excluir contas do Lote em qualquer região. Se como um ISV (fornecedor independente de software), por exemplo, você fornece um serviço para os clientes no qual cada um é atribuído a uma conta do Lote separada para fins de cobrança, pode adicionar recursos de criação e exclusão de conta no portal do cliente.
- Recuperar e regenerar chaves de conta programaticamente para qualquer uma de suas contas do Lote. Isso pode ajudá-lo a atender às políticas de segurança que impõem substituição periódica ou expiração de chaves de conta. Quando você tiver várias contas do Lote em várias regiões do Azure, a automação desse processo de substituição aumentará a eficiência da solução.
- Verificar cotas de conta e eliminar as suposições de tentativa e erro na determinação dos limites de cada conta do Lote. Ao verificar suas cotas de conta antes de iniciar trabalhos, de criar pools ou de adicionar nós de computação, você poderá ajustar proativamente quando ou onde esses recursos de computação serão criados. Você pode determinar quais contas exigem aumento de cota antes da alocação de recursos adicionais a elas.
- Combine os recursos de outros serviços do Azure para ter uma experiência de gerenciamento completa, usando o .NET de Gerenciamento do Lote, 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, a capacidade de criação e exclusão de grupos de recursos ininterrupta, além dos recursos descritos acima para uma solução de gerenciamento de ponta a ponta.
Observação
Embora este artigo se concentre no gerenciamento programático das contas, chaves e cotas do Lote, você também poderá executar muitas dessas atividades usando o portal do Azure.
Criar e excluir contas do Lote
Um dos principais recursos da API de Gerenciamento do Lote é criar e excluir contas do Lote em uma região do Azure. Para fazer isso, use BatchAccountCollection.CreateOrUpdate e Deleteou seus equivalentes assíncronos.
O snippet de código a seguir cria uma conta, obtém a conta recém-criada do serviço de Lote, então, 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);
Observação
Os aplicativos que usam a biblioteca .NET de Gerenciamento de Lote exigem acesso de administrador de serviço ou coadministrador à assinatura que possui a conta do Lote a ser gerenciada. Para saber mais, confira a seção Microsoft Entra ID 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 do Lote em 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);
Dica
Você pode criar um fluxo de trabalho simplificado de conexão para os aplicativos de gerenciamento. Primeiro, obtenha uma chave de conta para a conta do Lote que você deseja gerenciar com GetKeys. Em seguida, use essa chave ao inicializar a classe BatchSharedKeyCredentials da biblioteca .NET do Lote, que é usada ao inicializar BatchClient.
Verificar a assinatura e cotas da conta do Lote do Azure
As assinaturas do Azure e os serviços Azure individuais, como o Lote, têm cotas padrão limitando o número de determinadas entidades neles. Para obter as cotas padrão das assinaturas do Azure, veja Assinatura do Azure e limites de serviço, cotas e restrições. Para obter as cotas padrão do serviço do Lote, veja Cotas e limites para o serviço do Lote do Azure. Usando a biblioteca .NET de Gerenciamento de Lotes, 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 assinatura do Azure para cotas de conta do Lote
Antes de criar uma conta do Lote em uma região, verifique a sua assinatura do Azure para ver se é possível adicionar uma conta nessa região.
No snippet de código abaixo, primeiro usamos GetBatchAccounts para obter uma coleção de todas as contas do Lote que estão dentro de uma assinatura. Depois que obtivemos essa coleção, podemos determinar quantas contas estão na região de destino. Em seguida, usamos GetBatchQuotas para obter a cota da conta do Lote 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 snippet acima, creds
é uma instância de TokenCredentials. Para ver um exemplo de como criar esse objeto, confira o exemplo de código AccountManagement no GitHub.
Verificar as cotas de recursos de computação na conta do Lote
Antes de aumentar os recursos de computação em sua solução do Lote, você poderá garantir que os recursos que deseja alocar não excedam as cotas da conta. No snippet de código abaixo, imprimimos as informações de cota para a conta do 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 elevados solicitando um aumento de cota no portal do Azure.
Usar o Microsoft Entra ID com o .NET de Gerenciamento do Lote
A biblioteca do .NET de Gerenciamento de Lote é um cliente de provedor de recursos do Azure e é usada junto com o Azure Resource Manager para gerenciar recursos de conta de forma programática. O Microsoft Entra ID é necessário para autenticar solicitações feitas por meio de qualquer cliente de provedor de recursos do Azure, incluindo a biblioteca .NET do Gerenciamento de Lote e por meio do Azure Resource Manager. Para obter informações sobre como usar o Microsoft Entra ID com a biblioteca .NET de Gerenciamento do Lote, confira Usar o Microsoft Entra ID para autenticar soluções do 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 AccountManagment demonstra as operações a seguir:
- Adquira um token de segurança do Microsoft Entra ID usando as instruções descritas em Adquirir e armazenar tokens em cache usando a MSAL (Biblioteca de Autenticação da Microsoft). Se o usuário ainda não estiver conectado, será solicitado que ele forneça suas credenciais do Azure.
- Com o token de segurança obtido do Microsoft Entra ID, crie um SubscriptionClient para consultar o Azure e obter uma lista de assinaturas associadas à conta. O usuário poderá selecionar uma assinatura na lista se ela contiver mais de uma assinatura.
- Associe as credenciais à assinatura selecionada.
- Crie um objeto ResourceManagementClient usando as credenciais.
- Use um objeto ResourceManagementClient para criar um grupo de recursos.
- Use um objeto BatchManagementClient para executar várias operações de conta do Lote:
- Crie uma conta do Lote no novo grupo de recursos.
- Obtenha a conta recém-criada no serviço do Lote.
- Imprima as chaves de conta da nova conta.
- Regenere uma nova chave primária para a conta.
- Imprima as informações de cota para a conta.
- Imprima as informações de cota para a assinatura.
- Imprima todas as contas na assinatura.
- Exclua a conta recém-criada.
- Exclua o grupo de recursos.
Para executar o aplicativo de exemplo com êxito, primeiro, você precisa registrá-lo no 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 do lote com o Active Directory.
Próximas etapas
- Saiba mais sobre o Fluxo de trabalho e recursos primários do serviço de lote como pools, nós, trabalhos e tarefas.
- Obtenha as noções básicas sobre o desenvolvimento de um aplicativo habilitado para o Lote usando a biblioteca de cliente .NET do Lote ou do Python. O artigo de início rápido orienta você por meio de um aplicativo de exemplo que usa o serviço em Lotes para executar uma carga de trabalho em vários nós de computação, usando o Armazenamento do Microsoft Azure para preparação e recuperação de um arquivo de carga de trabalho.