Управление учетными записями и квотами пакетной службы с помощью клиентской библиотеки .NET для управления пакетной службой

С помощью библиотеки .NET для управления пакетной службой можно снизить издержки на обслуживание приложений пакетной службы Azure. Эта библиотека позволяет автоматизировать создание и удаление учетных записей пакетной службы, управление ключами и определение квот.

  • Создание и удаление учетных записей пакетной службы в любом регионе. Например, вы являетесь независимым поставщиком программного обеспечения и оказываете услуги клиентам, каждому из которых назначена соответствующая учетная запись пакетной службы для выставления счетов. Для повышения удобства вы можете добавить на портал для пользователей возможность создания и удаления учетных записей.
  • Получение и повторное создание ключей учетных записей для всех учетных записей пакетной службы программным образом. Это особенно удобно для обеспечения соответствия политикам безопасности, которые могут требовать периодической смены ключей и определять сроки действия ключей учетных записей. Если у вас есть несколько учетных записей пакетной службы в разных регионах Azure, автоматизация смены ключей повысит эффективность вашего решения.
  • Проверка квот учетных записей и исключение метода проб и ошибок из процедуры определения ограничений учетных записей пакетной службы. Проверка квот учетной записи до запуска заданий, создание пулов или добавление вычислительных узлов позволит вам заранее выбирать время и место создания вычислительных ресурсов. Вы можете определить учетные записи, требующие повышения квот, прежде чем выделить дополнительные ресурсы в этих учетных записях.
  • Объедините функции других служб Azure для полнофункциональное управление с помощью пакетного управления .NET, идентификатора Microsoft Entra и Azure Resource Manager вместе в одном приложении. С помощью этих функций и соответствующих API вы можете предоставлять клиентам удобные возможности проверки подлинности, создания и удаления групп ресурсов, а также доступа к описанным выше функциям.

Примечание.

В этой статье мы обсуждали в основном программное управление учетными записями, ключами и квотами пакетной службы, но большую часть описываемых действий можно выполнить и на портале Azure.

Создание и удаление учетных записей пакетной службы

Одной из основных функций API управления пакетной службой является возможность создания и удаления учетных записей пакетной службы в определенном регионе Azure. Для этого используйте методы BatchManagementClient.Account.CreateAsync и DeleteAsync, а также их синхронные аналоги.

В следующем фрагменте кода создается учетная запись, выполняется получение созданной учетной записи из пакетной службы, а затем она удаляется. В этом и других фрагментах кода, приведенных в этой статье, batchManagementClient представляет собой полностью инициализированный экземпляр 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);

Примечание.

Приложениям, использующим библиотеку .NET для управления пакетной службой и класс BatchManagementClient, необходимы права администратора службы или соадминистратора для доступа к подписке, которой принадлежит управляемая учетная запись пакетной службы. Дополнительные сведения см. в разделе идентификатора Microsoft Entra ID и примере кода AccountManagement .

Получение и повторное создание ключей учетных записей

Получите первичный и вторичный ключи из любой учетной записи пакетной службы в своей подписке с помощью метода GetKeysAsync. Для повторного создания этих ключей используется метод 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
            });

Совет

Вы можете упростить процедуру подключения в своем приложении для управления. Сначала получите ключ учетной записи пакетной службы, которой вы хотите управлять, с помощью метода GetKeysAsync. Затем используйте этот ключ при инициализации класса BatchSharedKeyCredentials библиотеки .NET пакетной службы, который применяется при инициализации BatchClient.

Проверка подписки Azure и квот учетной записи пакетной службы

Подписки Azure и отдельные службы Azure, такие как пакетная служба, имеют стандартные квоты для ограничения количества определенных в них сущностей. Квоты по умолчанию для подписок Azure см. в статье Подписка Azure, границы, квоты и ограничения службы. Квоты пакетной службы по умолчанию см. в статье Квоты и ограничения пакетной службы Azure. С помощью библиотеки .NET для управления пакетной службой можно проверять эти квоты в приложениях. Это позволяет принимать решения о выделении ресурсов перед добавлением учетных записей или вычислительных ресурсов, таких как пулы и вычислительные узлы.

Определение квот для учетной записи пакетной службы в подписке Azure

Прежде чем создавать учетную запись пакетной службы в определенном регионе, вы можете проверить данные подписки Azure, чтобы узнать о возможности создания учетной записи в этом регионе.

В следующем фрагменте кода мы сначала применяем метод Account.ListAsync, чтобы получить полную коллекцию учетных записей пакетной службы в подписке. После получения этой коллекции мы определяем количество учетных записей в целевом регионе. Затем мы используем метод GetQuotasAsync для получения квоты учетной записи пакетной службы и определения количества учетных записей, которые могут создаваться в этом регионе (если это возможно).

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

В приведенном выше фрагменте creds является экземпляром TokenCredentials. Пример создания этого объекта см. в примере AccountManagement на GitHub.

Определение квоты вычислительных ресурсов для учетной записи пакетной службы

Прежде чем увеличивать количество вычислительных ресурсов в решении пакетной службы, убедитесь, что выделяемые ресурсы не превысят квоты для учетной записи. В следующем фрагменте кода мы выводим сведения о квотах для учетной записи пакетной службы с именем mybatchaccount. В своем приложении с помощью этих сведений можно определить, способна ли учетная запись обрабатывать дополнительные ресурсы, которые вы хотите создать.

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

Важно!

Для подписок и служб Azure определены стандартные квоты, но многие из этих ограничений можно увеличить, создав запрос на увеличение квот на портале Azure.

Использование идентификатора Microsoft Entra с пакетным управлением .NET

Данная библиотека является клиентом поставщика ресурсов Azure и используется совместно с Azure Resource Manager для программного управления ресурсами учетных записей. Идентификатор Microsoft Entra требуется для проверки подлинности запросов, выполненных через любой клиент поставщика ресурсов Azure, включая библиотеку .NET для управления пакетной службой и с помощью Azure Resource Manager. Сведения об использовании идентификатора Microsoft Entra с библиотекой .NET для управления пакетной службой см. в статье "Использование идентификатора Microsoft Entra для проверки подлинности решений пакетной службы".

Пример проекта на сайте GitHub

Работу библиотеки .NET для управления пакетной службой можно посмотреть на примере проекта AccountManagement на сайте GitHub. В примере приложения AccountManagement демонстрируются следующие операции.

  1. Получение маркера безопасности из идентификатора Microsoft Entra с помощью маркеров получения и кэширования с помощью библиотеки проверки подлинности Майкрософт (MSAL). Если пользователь не выполнил вход, ему будет предложено ввести учетные данные Azure.
  2. С помощью маркера безопасности, полученного из идентификатора Microsoft Entra, создайте SubscriptionClient для запроса Azure списка подписок, связанных с учетной записью. Пользователь может выбрать подписку из списка, если он содержит более одной подписки.
  3. Получение учетных данных, связанных с выбранной подпиской.
  4. Создание объекта ResourceManagementClient с использованием учетных данных.
  5. Создание группы ресурсов с помощью объекта ResourceManagementClient.
  6. Используйте объект BatchManagementClient для выполнения нескольких операций учетной записи пакетной службы:
    • Создание учетной записи пакетной службы в новой группе ресурсов.
    • Получение созданной учетной записи из пакетной службы.
    • Вывод ключей учетной записи для новой учетной записи.
    • Повторное создание первичного ключа для учетной записи.
    • Вывод сведений о квотах для учетной записи.
    • Вывод сведений о квотах для подписки.
    • Вывод всех учетных записей в подписке.
    • Удаление только что созданной учетной записи.
  7. Удалите ее.

Для успешного запуска примера приложения необходимо сначала зарегистрировать его в клиенте Microsoft Entra в портал Azure и предоставить разрешения API Azure Resource Manager. Выполните инструкции, описанные в статье Аутентификация решений по управлению пакетной службой с помощью Active Directory.

Следующие шаги

  • Узнайте подробнее о рабочем процессе и основных ресурсах пакетной службы, таких как пулы, узлы, задания и задачи.
  • Здесь приведены основные сведения о разработке приложений с поддержкой пакетной службы с помощью клиентской библиотеки .NET для пакетной службы или Python. В этих кратких руководствах рассматривается пример приложения, которое использует пакетную службу для выполнения рабочей нагрузки на нескольких вычислительных узлах с применением службы хранилища Azure для помещения файла рабочей нагрузки на промежуточное хранение и обработку, а также его извлечения.