Gestire le quote e gli account Batch con la libreria client di gestione Batch per .NET
È possibile ridurre il sovraccarico di manutenzione nelle applicazioni Azure Batch usando la libreria .NET per la gestione di Batch per automatizzare le operazioni di creazione ed eliminazione di account Batch, gestione delle chiavi e individuazione delle quote.
- Creare ed eliminare account Batch in qualsiasi area. Se, ad esempio, un fornitore di software indipendente (ISV) offre un servizio per cui a ogni cliente viene assegnato un account Batch separato per la fatturazione, è possibile aggiungere funzionalità di creazione ed eliminazione di account al portale per i clienti.
- Recuperare e rigenerare chiavi di account a livello di programmazione per qualsiasi account Batch. Questa operazione consente di conformarsi ai criteri di sicurezza che impongono rollover periodici o la scadenza delle chiavi dell'account. In presenza di numerosi account Batch in diverse aree di Azure, l'automazione del processo di rollover permette di aumentare l'efficienza della soluzione.
- Controllare le quote degli account e determinare senza errori i limiti dei singoli account Batch. Il controllo delle quote degli account prima di avviare processi, creare pool o aggiungere nodi di calcolo permette di stabilire attivamente dove e quando creare risorse di calcolo. È possibile determinare quali account richiedono un aumento della quota prima dell'allocazione di risorse aggiuntive in tali account.
- Combinare le funzionalità di altri servizi di Azure per un'esperienza di gestione completa usando Batch Management .NET, Microsoft Entra ID e Azure Resource Manager insieme nella stessa applicazione. Usando queste funzionalità e le relative API è possibile eliminare i problemi di autenticazione, consentire la creazione e l'eliminazione di gruppi di risorse e fornire le funzionalità descritte in precedenza per una soluzione di gestione end-to-end.
Nota
Anche se questo articolo è incentrato sulla gestione a livello di codice degli account, delle chiavi e delle quote di Batch, è anche possibile eseguire molte di queste attività usando il portale di Azure.
Una delle funzionalità principali dell'API di gestione batch consiste nel creare ed eliminare account Batch in un'area di Azure. A tale scopo, usare BatchAccountCollection.CreateOrUpdate e Delete o le relative controparti asincrone.
Il frammento di codice seguente crea un account, ottiene l'account appena creato dal servizio Batch e quindi lo elimina.
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
Le applicazioni che usano la libreria Batch Management .NET richiedono l'accesso amministratore del servizio o coamministratore alla sottoscrizione proprietaria dell'account Batch da gestire. Per altre informazioni, vedere la sezione Microsoft Entra ID e l'esempio di codice AccountManagement .
Ottenere chiavi dell'account primario e secondario da qualsiasi account Batch all'interno della sottoscrizione usando GetKeys. È possibile rigenerare tali chiavi 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);
Suggerimento
È possibile creare un flusso di lavoro di connessione ottimizzato per le applicazioni di gestione. Prima di tutto, ottenere una chiave account per l'account Batch che si vuole gestire con GetKeys. Usare quindi questa chiave durante l'inizializzazione della classe BatchSharedKeyCredentials della libreria .NET di Batch usata durante l'inizializzazione di BatchClient.
Le sottoscrizioni di Azure e i singoli servizi di Azure come Batch hanno tutti quote predefinite che limitano il numero di determinate entità al loro interno. Per informazioni sulle quote predefinite per le sottoscrizioni di Azure, vedere Sottoscrizione di Azure e limiti, quote e vincoli dei servizi. Per le quote predefinite del servizio Batch, vedere Quote e limiti per il servizio Azure Batch. Tramite la libreria Batch Management .NET è possibile controllare queste quote nelle applicazioni. In questo modo è possibile prendere decisioni relative all'allocazione prima di aggiungere account o risorse di calcolo come pool e nodi di calcolo.
Prima di creare un account Batch in un'area, è possibile verificare se la sottoscrizione di Azure permette di aggiungere un account in quell'area.
Nel frammento di codice seguente viene prima usato GetBatchAccounts per ottenere una raccolta di tutti gli account Batch che si trovano all'interno di una sottoscrizione. Una volta ottenuta questa raccolta, è possibile determinare il numero di account nell'area di destinazione. Si usa quindi GetBatchQuotas per ottenere la quota dell'account Batch e determinare il numero di account (se presenti) che possono essere creati in tale area.
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);
Nel frammento di codice precedente è creds
un'istanza di TokenCredentials. Per un esempio relativo alla creazione di questo oggetto, vedere l'esempio di codice AccountManagement in GitHub.
Prima di aumentare le risorse di calcolo nella soluzione Batch, è possibile verificare che le risorse da allocare non superino le quote dell'account. Nel frammento di codice riportato di seguito si procede alla stampa delle informazioni sulle quote per l'account Batch denominato mybatchaccount
. Nell'applicazione è possibile usare queste informazioni per stabilire se l'account può gestire le risorse aggiuntive da creare.
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
Anche se esistono quote predefinite per le sottoscrizioni e i servizi di Azure, molti di questi limiti possono essere aumentati richiedendo un aumento della quota nel portale di Azure.
La libreria .NET per la gestione di Batch è un client del provider di risorse di Azure e viene usata in combinazione con Azure Resource Manager per gestire le risorse dell'account a livello di programmazione. L'ID Microsoft Entra è necessario per autenticare le richieste effettuate tramite qualsiasi client del provider di risorse di Azure, inclusa la libreria .NET di gestione batch e tramite Azure Resource Manager. Per informazioni sull'uso di Microsoft Entra ID con la libreria Batch Management .NET, vedere Usare l'ID Microsoft Entra per autenticare le soluzioni Batch.
Il progetto di esempio AccountManagement in GitHub permette di vedere .NET per la gestione di Batch in azione. L'applicazione di esempio AccountManagement illustra le operazioni seguenti:
- Acquisire un token di sicurezza da Microsoft Entra ID usando Acquisire e memorizzare nella cache i token usando Microsoft Authentication Library (MSAL). Se l'utente non ha già eseguito l'accesso, gli viene richiesto di fornire le credenziali di Azure.
- Con il token di sicurezza ottenuto da Microsoft Entra ID, creare un SubscriptionClient per eseguire una query in Azure per un elenco di sottoscrizioni associate all'account. L'utente può selezionare una sottoscrizione dall'elenco se contiene più di una sottoscrizione.
- Ottenere le credenziali associate alla sottoscrizione selezionata.
- Creare un oggetto ResourceManagementClient usando le credenziali.
- Usare l'oggetto ResourceManagementClient per creare un gruppo di risorse.
- Usare un oggetto BatchManagementClient per eseguire diverse operazioni dell'account Batch:
- Creare un account Batch nel nuovo gruppo di risorse.
- Ottenere l'account appena creato dal servizio Batch.
- Stampare le chiavi dell'account per il nuovo account.
- Rigenerare una nuova chiave primaria per l'account.
- Stampare le informazioni sulla quota per l'account.
- Stampare le informazioni sulla quota per la sottoscrizione.
- Stampare tutti gli account all'interno della sottoscrizione.
- Eliminare l'account appena creato.
- Eliminare il gruppo di risorse.
Per eseguire correttamente l'applicazione di esempio, è prima necessario registrarla con il tenant di Microsoft Entra nel portale di Azure e concedere le autorizzazioni all'API di Azure Resource Manager. Seguire la procedura indicata in Autenticare le soluzioni di gestione Batch con Active Directory.
- Informazioni sul flusso di lavoro e sulle risorse principali del servizio Batch, ad esempio pool, nodi, processi e attività.
- Apprendere le nozioni di base dello sviluppo di un'applicazione abilitata per Batch con la libreria client Batch .NET o con Python. Queste guide introduttive illustrano un'applicazione di esempio che usa il servizio Batch per eseguire un carico di lavoro su più nodi di calcolo usando Archiviazione di Azure per lo staging e il recupero dei file del carico di lavoro.