使用適用於 .NET 的 Batch 管理用戶端程式庫來管理 Batch 帳戶和配額

您可以使用 Batch Management .NET 程式庫,將 Batch 帳戶的建立、刪除、金鑰管理和配額探索自動化,以降低 Azure Batch 應用程式中的維護負擔。

  • 建立和刪除 Batch 帳戶 。 比方說,身為獨立軟體廠商 (ISV),您為每個獲派不同 Batch 帳戶的客戶針對計費目的提供服務,您可以將帳戶建立和刪除功能加入至客戶入口網站。
  • 擷取和重新產生帳戶金鑰 。 這可協助您符合強制定期變換帳戶金鑰或讓帳戶金鑰過期的安全性原則。 當您在各種不同的 Azure 區域中有數個 Batch 帳戶時,將此變換程序自動化可增加解決方案的效率。
  • 檢查帳戶配額 並採取反復試驗的猜測,判斷哪一個 Batch 帳戶有哪些限制。 藉由在開始作業、建立集區或新增計算節點之前檢查您的帳戶配額,您可以主動地調整建立計算資源的位置或時機。 您可以決定在帳戶中配置其他資源之前,哪些帳戶需要增加配額。
  • 結合其他 Azure 服務的功能,以獲得完整的管理體驗 -- 在同一個應用程式中同時使用 Batch Management .NET、Microsoft Entra IDAzure Resource Manager。 透過使用這些功能和其 API,您可以提供順暢的驗證體驗、建立和刪除資源群組的能力,以及上面所述的功能,以獲得端對端管理解決方案。

注意

雖然本文著重在以程式設計方式管理 Batch 帳戶、金鑰和配額,但您也可以使用 Azure 入口網站執行其中許多活動。

建立和刪除 Batch 帳戶

Batch Management API 的主要功能之一就是在 Azure 區域內建立和刪除 Batch 帳戶。 若要這樣做,請使用 BatchManagementClient.Account.CreateAsyncDeleteAsync,或其同步的對應項目。

下列程式碼片段會建立一個帳戶、從 Batch 服務取得新建立的帳戶,然後將它刪除。 在此程式碼片段和本文的其他程式碼片段中,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);

注意

使用 Batch Management .NET 程式庫和其 BatchManagementClient 類別的應用程式需要服務管理員或共同管理員存取權,以使用擁有要管理的 Batch 帳戶的訂用帳戶。 如需詳細資訊,請參閱 Microsoft Entra ID 一節和 AccountManagement 程式碼範例。

擷取和重新產生帳戶金鑰

使用 GetKeysAsync,從訂用帳戶內的任何 Batch 帳戶取得主要和次要帳戶金鑰。 您可以使用 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 來管理的 Batch 帳戶,取得帳戶金鑰。 接著,在初始化 Batch .NET 程式庫的 BatchSharedKeyCredentials 類別時 (初始化 BatchClient 時使用),使用此金鑰。

檢查 Azure 訂用帳戶和 Batch 帳戶配額

Azure 訂用帳戶和 Batch 之類的個別 Azure 服務均具有預設配額,限制其中特定實體的數目。 如需 Azure 訂用帳戶的預設配額,請參閱 Azure 訂用帳戶和服務限制、配額及條件約束。 如需 Batch 服務的預設配額,請參閱 Azure Batch 服務的配額和限制。 藉由使用 Batch Management .NET 程式庫,您可以檢查您的應用程式中的這些配額。 這可讓您在加入帳戶或計算資源 (如集區和計算節點) 之前進行配置決策。

檢查 Azure 訂用帳戶和 Batch 帳戶配額

在區域中建立 Batch 帳戶之前,您可以檢查您的 Azure 訂用帳戶,以查看您是否能夠將帳戶加入該區域中。

在下列程式碼片段中,我們會先使用 ListAsync 來取得訂用帳戶內所有 Batch 帳戶的集合。 在我們取得此集合後,我們會判斷目標區域中有多少個帳戶。 接著,我們使用GetQuotasAsync 來取得 Batch 帳戶配額,並決定該區域中可以建立多少個帳戶 (如果有的話)。

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

在上述程式碼片段中,credsTokenCredentials 的執行個體。 若要查看建立此物件的範例,請參閱 GitHub 上的 AccountManagement 程式碼範例。

檢查 Batch 帳戶的計算資源配額

在 Batch 方案中增加計算資源之前,您可以檢查以確定您要配置的資源不會超過帳戶的配額。 在下列程式碼片段中,我們會列印名為 mybatchaccount 的 Batch 帳戶配額資訊。 在您自己的應用程式中,您可以使用這類資訊來判斷帳戶是否可以處理要建立的其他資源。

// 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 ID 與 Batch Management .NET 搭配使用

Batch Management .NET 程式庫是 Azure 資源提供者用戶端,並與 Azure Resource Manager 搭配使用,以程式設計方式管理帳戶資源。 驗證透過任何 Azure 資源提供者用戶端 (包括 Batch Management .NET 程式庫),以及透過 Azure Resource Manager 所提出的要求時,都需要 Microsoft Entra ID。 如需搭配 Batch Management .NET 程式庫使用 Microsoft Entra ID 的詳細資訊,請參閱使用 Microsoft Entra ID 驗證 Batch 解決方案

GitHub 上的範例專案

若要查看 Batch Management .NET 的實際運作,請查看 GitHub 上的 AccountManagement 範例專案。 AccountManagement 範例應用程式會示範下列作業:

  1. 透過使用 Microsoft 驗證程式庫 (MSAL) 取得和快取權杖,從 Microsoft Entra ID 取得安全性權杖。 如果使用者尚未登入,系統會提示使用者輸入其 Azure 認證。
  2. 使用從 Microsoft Entra ID 取得的安全性權杖,建立 SubscriptionClient 來查詢 Azure,以取得與帳戶相關聯的訂用帳戶清單。 如果清單包含多個訂用帳戶,使用者可以從清單中選取一個訂用帳戶。
  3. 取得與所選訂用帳戶相關聯的認證。
  4. 使用認證來建立 ResourceManagementClient 物件。
  5. 使用 ResourceManagementClient 物件來建立資源群組。
  6. 使用 BatchManagementClient 物件來執行數個 Batch 帳戶作業:
    • 在新的資源群組中建立 Batch 帳戶。
    • 從 Batch 服務取得新建立的帳戶。
    • 列印新帳戶的帳戶金鑰。
    • 重新產生帳戶的新主要金鑰。
    • 列印帳戶的配額資訊。
    • 列印訂用帳戶的配額資訊。
    • 列印訂用帳戶內的所有帳戶。
    • 刪除新建立的帳戶。
  7. 刪除該資源群組。

若要成功執行範例應用程式,必須先向 Azure 入口網站中的 Microsoft Entra 租用戶註冊範例應用程式,並將權限授與 Azure Resource Manager API。 請依照使用 Active Directory 驗證 Batch Management 解決方案中所提供的步驟執行。

下一步

  • 了解 Batch 服務工作流程和主要資源,例如集區、節點、作業和工作。
  • 了解使用 Batch .NET 用戶端程式庫Python 開發啟用 Batch 之應用程式的基本概念。 這些快速入門會介紹使用 Batch 服務在多個計算節點上執行工作負載的範例應用程式,以及使用 Azure 儲存體進行工作負載檔案的預備和擷取