練習 - 使用 .NET 用戶端程式庫存取您的 Batch 帳戶

已完成

重要

您必須有自己的 Azure 訂用帳戶才能執行本練習,且可能會產生費用。 如果您還沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

Azure Batch 用戶端 API 可讓您以程式方式控制 Batch 帳戶中的所有資源的建立、執行和監視。

在本練習中,我們將建立一個新的主控台應用程式,並將其連線到我們稍早使用 Microsoft.Azure.Batch NuGet 套件所建立的 Azure Batch 帳戶。 若要測試此設定運作正常,我們會查詢 Batch 帳戶以確認 ffmpeg 已正確地新增至帳戶。

建立本機主控台應用程式

使用 Cloud Shell 來完成本課程模組中的其餘練習。

  1. 在入口網站頂端功能表中選取 Cloud Shell 圖示,以在 Azure 入口網站中啟動 Cloud Shell。

  2. 使用 Cloud Shell 視窗頂端的下拉式清單來選取 Bash

  3. 在 Cloud Shell 中執行下列命令,以便為您的應用程式建立新目錄:

    mkdir cutifypets
    cd cutifypets
    
  4. 使用 dotnet new 命令建立新的 .NET Core 控制台應用程式,然後執行它:

    dotnet new console
    dotnet run
    

    如果您已成功建立主控台應用程式,應該會看到下列列印到主控台的內容:

    Hello World!
    

設定應用程式的連線詳細資料

  1. 在 Cloud Shell 中,使用下列 dotnet add package 命令新增 Azure Batch NuGet 套件:

    dotnet add package Microsoft.Azure.Batch
    
  2. 在 Cloud Shell 中執行下列命令,將您的資源群組儲存到環境變數中,讓我們可以將其用於後續的命令中。 將 [YOUR RESOURCE GROUP] 取代為您在建立 Batch 帳戶時所使用的資源群組名稱。

    export RESOURCE_GROUP=[YOUR RESOURCE GROUP]
    
  3. 使用下列命令,將 Batch 帳戶認證儲存在能夠透過主控台應用程式存取的環境變數中:

    export BATCH_URL='https://'$(az batch account list --query "[?contains(name,'cuti')].accountEndpoint" --output tsv)
    export BATCH_NAME=$(az batch account list --query "[?contains(name,'cuti')].name" --output tsv)
    export BATCH_KEY=$(az batch account keys list --name $BATCH_NAME --query primary -o tsv --resource-group $RESOURCE_GROUP)
    
  4. 使用下列命令來檢查儲存的值是否正確:

    echo 'URL='$BATCH_URL 'NAME='$BATCH_NAME 'KEY='$BATCH_KEY
    

    請確定您已設定這些值。 如果您必須在任何時間點重新啟動 Cloud Shell,您需要再次設定這些變數。

  5. 使用下列程式碼以在編輯器中編輯 Program.cs 檔案:

    code Program.cs
    
  6. 將所有現有程式碼取代為以下內容:

    namespace cutifypets
    {
        using System;
        using Microsoft.Azure.Batch;
        using Microsoft.Azure.Batch.Auth;
        using Microsoft.Azure.Batch.Common;
    
        class Program
        {
            private const string envVarBatchURI = "BATCH_URL";
            private const string envVarBatchName = "BATCH_NAME";
            private const string envVarKey = "BATCH_KEY";
    
            private static string batchAccountName;
            private static string batchAccountUrl;
            private static string batchAccountKey;
    
            static void Main(string[] args)
            {
                // Read the environment variables to allow the app to connect to the Azure Batch account
                batchAccountUrl = Environment.GetEnvironmentVariable(envVarBatchURI);
                batchAccountName = Environment.GetEnvironmentVariable(envVarBatchName);
                batchAccountKey = Environment.GetEnvironmentVariable(envVarKey);
    
                // Show the user the batch the app is attaching to
                Console.WriteLine("URL: {0}, Name: {1}, Key: {2}", batchAccountUrl, batchAccountName, batchAccountKey);
    
                // The batch client requires a BatchSharedKeyCredentials object to open a connection
                var sharedKeyCredentials = new BatchSharedKeyCredentials(batchAccountUrl, batchAccountName, batchAccountKey);
                var batchClient = BatchClient.Open(sharedKeyCredentials);
    
                // The batchClient object can reference all the application packages, and get a summary of their details
                foreach (var app in batchClient.ApplicationOperations.ListApplicationSummaries() ) {
                    // For each application package, print to the console their name and version number
                    Console.WriteLine("Installed app: {0}({1})", app.Id, app.Versions[0]);
                }
            }
        }
    }
    

    ​看完前面的程式碼和註解。 該主控台應用程式會匯入 Microsoft.Azure.Batch 用戶端程式庫,以新增 Azure Batch 功能。 應用程式會使用您在上一個步驟中儲存的環境變數,開啟您在 Azure 入口網站中建立的 Batch 帳戶連線。 Batch 用戶端之後就可以查詢 Batch 中服務的屬性。 範例程式碼會顯示您上傳之 ffmpeg 應用程式的詳細資料,藉此逐一查看應用程式封裝。

  7. 在程式碼編輯器中,以滑鼠右鍵按一下並選取 [儲存],然後選取 [結束]

  8. 在 Cloud Shell 中,使用下列命令來編譯並執行應用程式:

    dotnet run
    
  9. 執行應用程式會將應用程式封裝寫入至主控台。 您應該會得到下列結果:

    Installed app: ffmpeg(3.4)
    

恭喜! 您已經成功地將 Azure Batch 和 Azure 儲存體程式庫整合到您的應用程式中,以擷取 Batch 帳戶中已安裝應用程式的清單。 下一個步驟是建立計算節點的集區以執行我們的作業。