Hantera Batch-konton och kvoter med Batch Management-klientbiblioteket för .NET

Du kan minska underhållskostnaderna i dina Azure Batch-program med hjälp av Batch Management .NET-biblioteket för att automatisera skapande, borttagning, nyckelhantering och kvotidentifiering i Batch-kontot.

  • Skapa och ta bort Batch-konton inom valfri region. Om du till exempel som oberoende programvaruleverantör (ISV) tillhandahåller en tjänst för dina klienter där var och en tilldelas ett separat Batch-konto i faktureringssyfte, kan du lägga till funktioner för att skapa och ta bort konton i kundportalen.
  • Hämta och återskapa kontonycklar programmatiskt för något av dina Batch-konton. Detta kan hjälpa dig att följa säkerhetsprinciper som framtvingar regelbunden återställning eller förfallodatum för kontonycklar. När du har flera Batch-konton i olika Azure-regioner ökar automatiseringen av den här rollover-processen lösningens effektivitet.
  • Kontrollera kontokvoterna och ta bort gissningen om utvärdering och fel för att avgöra vilka Batch-konton som har vilka gränser. Genom att kontrollera dina kontokvoter innan du startar jobb, skapar pooler eller lägger till beräkningsnoder kan du proaktivt justera var eller när dessa beräkningsresurser skapas. Du kan avgöra vilka konton som kräver kvotökningar innan du allokerar ytterligare resurser i dessa konton.
  • Kombinera funktioner i andra Azure-tjänster för en fullständig hanteringsupplevelse med hjälp av Batch Management .NET, Microsoft Entra ID och Azure Resource Manager tillsammans i samma program. Genom att använda dessa funktioner och deras API:er kan du tillhandahålla en friktionsfri autentiseringsupplevelse, möjligheten att skapa och ta bort resursgrupper och de funktioner som beskrivs ovan för en hanteringslösning från slutpunkt till slutpunkt.

Kommentar

Den här artikeln fokuserar på programmatisk hantering av batchkonton, nycklar och kvoter, men du kan också utföra många av dessa aktiviteter med hjälp av Azure-portalen.

Skapa och ta bort Batch-konton

En av de viktigaste funktionerna i Batch Management-API:et är att skapa och ta bort Batch-konton i en Azure-region. Om du vill göra det använder du BatchManagementClient.Account.CreateAsync och DeleteAsync, eller deras synkrona motsvarigheter.

Följande kodfragment skapar ett konto, hämtar det nyligen skapade kontot från Batch-tjänsten och tar sedan bort det. I det här kodfragmentet och de andra i den här artikeln batchManagementClient är en helt initierad instans av 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);

Kommentar

Program som använder Batch Management .NET-biblioteket och dess BatchManagementClient-klass kräver tjänstadministratör eller coadministrator-åtkomst till den prenumeration som äger Batch-kontot som ska hanteras. Mer information finns i avsnittet Microsoft Entra-ID och kodexemplet AccountManagement .

Hämta och återskapa kontonycklar

Hämta primära och sekundära kontonycklar från valfritt Batch-konto i din prenumeration med hjälp av GetKeysAsync. Du kan återskapa dessa nycklar med hjälp av 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
            });

Dricks

Du kan skapa ett effektiviserat anslutningsarbetsflöde för dina hanteringsprogram. Hämta först en kontonyckel för det Batch-konto som du vill hantera med GetKeysAsync. Använd sedan den här nyckeln när du initierar Batch .NET-bibliotekets BatchSharedKeyCredentials-klass , som används vid initiering av BatchClient.

Kontrollera kvoter för Azure-prenumeration och Batch-konto

Azure-prenumerationer och enskilda Azure-tjänster som Batch har alla standardkvoter som begränsar antalet vissa entiteter i dem. Standardkvoter för Azure-prenumerationer finns i Azure-prenumerations - och tjänstgränser, kvoter och begränsningar. Standardkvoter för Batch-tjänsten finns i Kvoter och gränser för Azure Batch-tjänsten. Med hjälp av Batch Management .NET-biblioteket kan du kontrollera dessa kvoter i dina program. På så sätt kan du fatta allokeringsbeslut innan du lägger till konton eller beräkningsresurser som pooler och beräkningsnoder.

Kontrollera en Azure-prenumeration för Batch-kontokvoter

Innan du skapar ett Batch-konto i en region kan du kontrollera din Azure-prenumeration för att se om du kan lägga till ett konto i den regionen.

I kodfragmentet nedan använder vi först ListAsync för att hämta en samling av alla Batch-konton som finns i en prenumeration. När vi har fått den här samlingen avgör vi hur många konton som finns i målregionen. Sedan använder vi GetQuotasAsync för att hämta Batch-kontokvoten och fastställa hur många konton (om några) som kan skapas i den regionen.

// 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);

I kodfragmentet ovan creds är en instans av TokenCredentials. Ett exempel på hur du skapar det här objektet finns i kodexemplet AccountManagement på GitHub.

Kontrollera ett Batch-konto för beräkningsresurskvoter

Innan du ökar beräkningsresurserna i Batch-lösningen kan du kontrollera att de resurser som du vill allokera inte överskrider kontots kvoter. I kodfragmentet nedan skriver vi ut kvotinformationen för Batch-kontot med namnet mybatchaccount. I ditt eget program kan du använda sådan information för att avgöra om kontot kan hantera de ytterligare resurser som ska skapas.

// 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);

Viktigt!

Det finns standardkvoter för Azure-prenumerationer och -tjänster, men många av dessa gränser kan höjas genom att begära en kvotökning i Azure-portalen.

Använda Microsoft Entra-ID med Batch Management .NET

Batch Management .NET-biblioteket är en Azure-resursproviderklient och används tillsammans med Azure Resource Manager för att hantera kontoresurser programmatiskt. Microsoft Entra-ID krävs för att autentisera begäranden som görs via valfri Azure-resursproviderklient, inklusive Batch Management .NET-biblioteket och via Azure Resource Manager. Information om hur du använder Microsoft Entra-ID med Batch Management .NET-biblioteket finns i Använda Microsoft Entra-ID för att autentisera Batch-lösningar.

Exempelprojekt på GitHub

Om du vill se hur Batch Management .NET fungerar i praktiken kan du titta på exempelprojektet AccountManagement på GitHub. Exempelprogrammet AccountManagement visar följande åtgärder:

  1. Hämta en säkerhetstoken från Microsoft Entra-ID med hjälp av Hämta och cachelagra token med hjälp av Microsoft Authentication Library (MSAL). Om användaren inte redan är inloggad uppmanas de att ange sina Azure-autentiseringsuppgifter.
  2. Med säkerhetstoken som hämtats från Microsoft Entra-ID:t skapar du en SubscriptionClient för att fråga Azure om en lista över prenumerationer som är associerade med kontot. Användaren kan välja en prenumeration i listan om den innehåller mer än en prenumeration.
  3. Hämta autentiseringsuppgifter som är associerade med den valda prenumerationen.
  4. Skapa ett ResourceManagementClient-objekt med hjälp av autentiseringsuppgifterna.
  5. Använd ett ResourceManagementClient-objekt för att skapa en resursgrupp.
  6. Använd ett BatchManagementClient-objekt för att utföra flera Batch-kontoåtgärder:
    • Skapa ett Batch-konto i den nya resursgruppen.
    • Hämta det nyligen skapade kontot från Batch-tjänsten.
    • Skriv ut kontonycklarna för det nya kontot.
    • Återskapa en ny primärnyckel för kontot.
    • Skriv ut kvotinformationen för kontot.
    • Skriv ut kvotinformationen för prenumerationen.
    • Skriv ut alla konton i prenumerationen.
    • Ta bort det nyligen skapade kontot.
  7. Ta bort resursgruppen.

Om du vill köra exempelprogrammet måste du först registrera det med din Microsoft Entra-klientorganisation i Azure-portalen och bevilja behörigheter till Azure Resource Manager-API:et. Följ stegen i Autentisera Batch Management-lösningar med Active Directory.

Nästa steg

  • Lär dig mer om Batch-tjänstens arbetsflöde och primära resurser , till exempel pooler, noder, jobb och uppgifter.
  • Lär dig hur du utvecklar ett enkelt Batch-aktiverat program med hjälp av Batch .NET-klientbiblioteket eller Python. De här snabbstarterna vägleder dig genom ett exempelprogram som använder Batch-tjänsten för att köra en arbetsbelastning på flera beräkningsnoder med hjälp av Azure Storage för mellanlagring av arbetsbelastningsfiler och hämtning.git pus