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.

Creare ed eliminare account Batch

Una delle funzionalità principali dell'API di gestione batch consiste nel creare ed eliminare account Batch in un'area di Azure. A questo scopo, usare BatchManagementClient.Account.CreateAsync e DeleteAsync o le relative controparti sincrone.

Il frammento di codice seguente crea un account, ottiene l'account appena creato dal servizio Batch e quindi lo elimina. In questo e in altri frammenti di codice in questo articolo batchManagementClient è un'istanza completamente inizializzata di BatchManagementClient.

// Create a new Batch account
await batchManagementClient.Account.CreateAsync("MyResourceGroup",
    "mynewaccount",
    new BatchAccountCreateParameters() { Location = "West US" });

// Get the new account from the Batch service
AccountResource account = await batchManagementClient.Account.GetAsync(
    "MyResourceGroup",
    "mynewaccount");

// Delete the account
await batchManagementClient.Account.DeleteAsync("MyResourceGroup", account.Name);

Nota

Le applicazioni che usano la libreria Batch Management .NET e la relativa classe BatchManagementClient necessitano di accesso come amministratore del servizio o coamministratore alla sottoscrizione a cui appartiene l'account Batch da gestire. Per altre informazioni, vedere la sezione Microsoft Entra ID e l'esempio di codice AccountManagement .

Recuperare e rigenerare chiavi di account

Ottenere chiavi dell'account primario e secondario da qualsiasi account Batch all'interno della sottoscrizione usando GetKeysAsync. Le chiavi possono essere rigenerate con RegenerateKeyAsync.

// Get and print the primary and secondary keys
BatchAccountGetKeyResult accountKeys =
    await batchManagementClient.Account.GetKeysAsync(
        "MyResourceGroup",
        "mybatchaccount");
Console.WriteLine("Primary key:   {0}", accountKeys.Primary);
Console.WriteLine("Secondary key: {0}", accountKeys.Secondary);

// Regenerate the primary key
BatchAccountRegenerateKeyResponse newKeys =
    await batchManagementClient.Account.RegenerateKeyAsync(
        "MyResourceGroup",
        "mybatchaccount",
        new BatchAccountRegenerateKeyParameters() {
            KeyName = AccountKeyType.Primary
            });

Suggerimento

È possibile creare un flusso di lavoro di connessione ottimizzato per le applicazioni di gestione. Ottenere prima di tutto una chiave account per l'account Batch che si vuole gestire con GetKeysAsync. Usare quindi questa chiave durante l'inizializzazione della classe BatchSharedKeyCredentials della libreria .NET di Batch usata durante l'inizializzazione di BatchClient.

Verificare le quote di sottoscrizioni di Azure e account Batch

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.

Verificare le quote dell'account Batch di una sottoscrizione di Azure

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 si usa innanzitutto ListAsync per ottenere una raccolta di tutti gli account Batch all'interno di una sottoscrizione. Una volta ottenuta questa raccolta, è possibile determinare il numero di account nell'area di destinazione. Si usa quindi GetQuotasAsync per ottenere la quota dell'account Batch e determinare il numero di account (se presenti) che possono essere creati in tale area.

// Get a collection of all Batch accounts within the subscription
BatchAccountListResponse listResponse =
        await batchManagementClient.BatchAccount.ListAsync(new AccountListParameters());
IList<AccountResource> accounts = listResponse.Accounts;
Console.WriteLine("Total number of Batch accounts under subscription id {0}:  {1}",
    creds.SubscriptionId,
    accounts.Count);

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

// Get the account quota for the specified region
SubscriptionQuotasGetResponse quotaResponse = await batchManagementClient.Location.GetQuotasAsync(region);
Console.WriteLine("Account quota for {0} region: {1}", region, quotaResponse.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.", quotaResponse.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.

Verificare le quote di risorse di calcolo in un account Batch

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.

// First obtain the Batch account
BatchAccountGetResponse getResponse =
    await batchManagementClient.Account.GetAsync("MyResourceGroup", "mybatchaccount");
AccountResource account = getResponse.Resource;

// Now print the compute resource quotas for the account
Console.WriteLine("Core quota: {0}", account.Properties.CoreQuota);
Console.WriteLine("Pool quota: {0}", account.Properties.PoolQuota);
Console.WriteLine("Active job and job schedule quota: {0}", account.Properties.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.

Usare Microsoft Entra ID con Batch Management .NET

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.

Progetto di esempio su GitHub

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:

  1. 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.
  2. 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.
  3. Ottenere le credenziali associate alla sottoscrizione selezionata.
  4. Creare un oggetto ResourceManagementClient usando le credenziali.
  5. Usare l'oggetto ResourceManagementClient per creare un gruppo di risorse.
  6. 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.
  7. 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.

Passaggi successivi

  • 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 in più nodi di calcolo, usando Archiviazione di Azure per la gestione temporanea e il recupero dei file del carico di lavoro.