Verwalten von Batch-Konten und -Kontingenten mit der Batch Management-Clientbibliothek für .NET
Sie können den Wartungsaufwand in Ihren Azure Batch-Anwendungen verringern, indem Sie mithilfe der Batch Management .NET-Bibliothek das Erstellen des Batch-Kontos, das Löschen, die Schlüsselverwaltung und die Kontingentermittlung automatisieren.
- Erstellen und Löschen von Batch-Konten in jeder Region. Wenn Sie als unabhängiger Softwareanbieter (ISV) beispielsweise Ihren Kunden einen Dienst anbieten, bei dem jedem ein separates Batch-Konto zu Abrechnungszwecken zugewiesen wird, können Sie dem Kundenportal Funktionen zum Erstellen und Löschen von Konten hinzufügen.
- Programmgesteuertes Abrufen und erneutes Erstellen von Kontenschlüsseln für alle Batch-Konten. Dies erleichtert Ihnen die Einhaltung von Sicherheitsrichtlinien, mit denen ein regelmäßiges Rollover oder der Ablauf von Kontoschlüsseln erzwungen wird. Bei mehreren Batch-Konten in verschiedenen Azure-Regionen, erhöht die Automatisierung dieses Rolloverprozesses die Lösungseffizienz.
- Überprüfen von Kontokontingenten und Beseitigen der Mutmaßungen des Trial-and-Error-Prinzips beim Festlegen der Einschränkungen für die jeweiligen Batch-Konten. Durch Überprüfen der Kontokontingente vor dem Starten von Aufträgen, Erstellen von Pools oder Hinzufügen von Computeknoten können Sie proaktiv anpassen, wo und wann diese Computeressourcen erstellt werden. Sie können bestimmen, für welche Konten die Kontingente erhöht werden müssen, bevor zusätzliche Ressourcen in diesen Konten zugewiesen werden.
- Kombinieren Sie Funktionen von anderen Azure-Diensten, um eine Verwaltung mit optimalem Funktionsumfang zu ermöglichen. Nutzen Sie dafür Batch Management .NET, Microsoft Entra ID und Azure Resource Manager gemeinsam in derselben Anwendung. Wenn Sie diese Funktionen und ihre APIs nutzen, können Sie ein reibungsloses Authentifizierungserlebnis, Möglichkeiten zum Erstellen und Löschen von Ressourcengruppen und die oben beschriebenen Funktionen für eine End-to-End-Verwaltungslösung bereitstellen.
Hinweis
Auch wenn sich dieser Artikel auf die programmgesteuerte Verwaltung der Batch-Konten, -Schlüssel und -Kontingente konzentriert, können Sie viele dieser Aktivitäten auch mithilfe des Azure-Portals ausführen.
Erstellen und Löschen von Batch-Konten
Eine der Hauptfunktionen der Batch Management-API ist das Erstellen und Löschen von Batch-Konten innerhalb einer Azure-Region. Verwenden Sie dazu BatchAccountCollection.CreateOrUpdate und Löschen oder deren asynchrone Entsprechungen.
Mit dem folgenden Codeausschnitt wird ein Konto erstellt, und das neu erstellte Konto wird aus dem Batch-Dienst abgerufen und anschließend gelöscht.
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);
Hinweis
Anwendungen, die die Batch Management .NET-Bibliothek verwenden, benötigen einen Zugriff als Dienstadministrator oder Co-Administrator auf das Abonnement, das Besitzer des zu verwaltenden Batch-Kontos ist. Weitere Informationen finden Sie im Abschnitt zu Microsoft Entra ID und im AccountManagement-Codebeispiel.
Programmgesteuertes Abrufen und erneutes Erstellen von Kontenschlüsseln
Rufen Sie primäre und sekundäre Kontoschlüssel aus einem beliebigen Batch-Konto innerhalb Ihres Abonnements mithilfe von GetKeys ab. Sie können diese Schlüssel mit RegenerateKey erneut generieren.
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);
Tipp
Sie können einen optimierten Verbindungsworkflow für Ihre Verwaltungsanwendungen erstellen. Rufen Sie zuerst mithilfe von GetKeys einen Kontoschlüssel für das zu verwaltende Batch-Konto ab. Verwenden Sie diesen Schlüssel anschließend beim Initialisieren der BatchSharedKeyCredentials-Klasse aus der Batch .NET-Bibliothek. Diese Klasse wird beim Initialisieren von BatchClient verwendet.
Überprüfen des Azure-Abonnements und der Batch-Kontokontingente
Azure-Abonnements und die einzelnen Azure-Dienste wie z. B. Batch verfügen über Standardkontingente, die die Anzahl von bestimmten darin enthaltenen Entitäten begrenzen. Die Standardkontingente für Azure-Abonnements finden Sie unter Einschränkungen für Azure-Abonnements und Dienste, Kontingente und Einschränkungen. Die Standardkontingente für den Batch-Dienst finden Sie unter Kontingente und Limits für den Azure Batch-Dienst. Mithilfe der Batch Management .NET-Bibliothek können Sie diese Kontingente in Ihren Anwendungen überprüfen. Dadurch können Sie Zuordnungsentscheidungen treffen, bevor Sie Konten oder Computeressourcen hinzufügen (z. B. Pools und Computeknoten).
Überprüfen des Azure-Abonnements für Batch-Kontokontingente
Vor dem Erstellen eines Batch-Kontos in einer Region können Sie Ihr Azure-Abonnement überprüfen, um festzustellen, ob Sie ein Konto in der betreffenden Region hinzufügen können.
Im folgenden Codeausschnitt verwenden wir zunächst GetBatchAccounts, um eine Sammlung aller Batch-Konten innerhalb eines Abonnements abzurufen. Nach dem Abrufen dieser Auflistung bestimmen wir, wie viele Konten sich in der Zielregion befinden. Anschließend rufen wir mithilfe von GetBatchQuotas das Batch-Kontokontingent ab und bestimmen, wie viele Konten (wenn überhaupt) in dieser Region erstellt werden können.
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);
Im obigen Codeausschnitt ist creds
eine Instanz von TokenCredentials. Ein Beispiel zum Erstellen dieses Objekts finden Sie im AccountManagement-Codebeispiel auf GitHub.
Überprüfen eines Batch-Kontos für Computeressourcenkontingente
Bevor Sie die Anzahl von Computeressourcen in Ihrer Batch-Lösung erhöhen, können Sie sich vergewissern, dass die Ressourcen, die Sie zuordnen möchten, nicht die Kontingente des Kontos überschreiten. Mit dem folgenden Codeausschnitt werden die Kontingentinformationen für das Batch-Konto mybatchaccount
ausgegeben. In Ihrer eigenen Anwendung können Sie anhand solcher Informationen bestimmen, ob das Konto die zusätzlichen zu erstellenden Ressourcen überhaupt aufnehmen kann.
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);
Wichtig
Solange Standardkontingente für Azure-Abonnements und -Dienste vorliegen, können viele dieser Grenzen durch Anfordern einer Kontingenterhöhung im Azure-Portal heraufgesetzt werden.
Microsoft Entra- D mit Batchmanagement .NET
Die Batch Management .NET-Bibliothek ist ein Azure-Ressourcenanbieterclient, der zusammen mit Azure Resource Manager zum programmgesteuerten Verwalten von Kontoressourcen verwendet wird. Microsoft Entra ID ist erforderlich, um Anforderungen zu authentifizieren, die über Azure-Ressourcenanbieterclients wie z. B. die Batch Management .NET-Bibliothek und über Azure Resource Manager übermittelt werden. Informationen zum Verwenden von Microsoft Entra ID mit der Batch Management .NET-Bibliothek finden Sie unter Verwenden von Microsoft Entra ID zum Authentifizieren von Batch-Lösungen.
Beispielprojekt auf GitHub
Sehen Sie sich das Beispielprojekt AccountManagement auf GitHub an, um Batch Management .NET in Aktion zu erleben. Die AccountManagement-Beispielanwendung veranschaulicht die folgenden Vorgänge:
- Rufen Sie mithilfe von Abrufen und Zwischenspeichern von Token mithilfe von Microsoft Authentication Library (MSAL) einen Sicherheitstokens aus Microsoft Entra ID ab. Wenn der Benutzer noch nicht angemeldet ist, wird er aufgefordert, die Azure-Anmeldeinformationen einzugeben.
- Erstellen eines SubscriptionClient-Elements mit dem von Microsoft Entra ID abgerufenen Sicherheitstoken, um Azure nach einer Liste von Abonnements abzufragen, die dem Konto zugeordnet sind. Der Benutzer kann ein Abonnement in der Liste auswählen, wenn diese mehrere Abonnements enthält.
- Abrufen der Anmeldeinformationen, die dem ausgewählten Abonnement zugeordnet sind
- Erstellen eines ResourceManagementClient-Objekts mithilfe der Anmeldeinformationen.
- Erstellen einer Ressourcengruppe mithilfe eines ResourceManagementClient-Objekts.
- Verwenden Sie ein BatchManagementClient-Objekt, um mehrere Batch-Kontovorgänge durchzuführen:
- Erstellen eines Batch-Kontos in der neuen Ressourcengruppe.
- Abrufen des neu erstellten Kontos aus dem Batch-Dienst.
- Drucken der Kontoschlüssel für das neue Konto.
- Erneutes Generieren eines neuen Primärschlüssels für das Konto.
- Ausgeben der Kontingentinformationen für das Konto.
- Ausgeben der Kontingentinformationen für das Abonnement.
- Ausgeben aller Konten innerhalb des Abonnements.
- Löschen des neu erstellten Kontos.
- Löschen Sie die Ressourcengruppe.
Um die Beispielanwendung erfolgreich ausführen zu können, müssen Sie sie zunächst bei Ihrem Microsoft Entra-Mandanten im Azure-Portal registrieren und der Azure Resource Manager-API Berechtigungen erteilen. Führen Sie die Schritte in Authentifizieren von Batch Management-Lösungen mit Active Directory aus.
Nächste Schritte
- Erfahren Sie mehr über den Workflow des Batch-Diensts und primäre Ressourcen wie Pools, Knoten, Aufträge und Aufgaben.
- Informieren Sie sich über die Grundlagen der Entwicklung einer Batch-fähigen Anwendung mit der Batch-.NET-Clientbibliothek oder mit Python. In diesen Schnellstarts werden Sie durch eine Beispielanwendung geführt, die den Azure Batch-Dienst zum Ausführen einer Workload auf mehreren Computeknoten verwendet und Azure Storage zum Bereitstellen und Abrufen von Workloaddateien nutzt.