本機 Azure 配置
.NET .NET Aspire 使用其吸引人的應用程式承載模型來簡化本地雲端原生應用程式的開發。 此模型可讓您使用與 Azure相同的組態和服務,在本機執行應用程式。 在本文中,您將瞭解如何透過 .NET.NET Aspire 應用程式主機,從本機開發環境布建 Azure 資源。
注意
為了說明清楚,資源會在 Azure中布建,但布建過程是從本機開發環境中啟動的。 若要優化本機開發體驗,請考慮在可用時使用模擬器或容器。 如需詳細資訊,請參閱 一般開發人員體驗。
要求
本文假設您有 Azure 帳戶和訂用帳戶。 如果您沒有 Azure 帳戶,您可以在 Azure 免費帳戶建立免費帳戶。 若要讓布建功能正常運作,您必須使用 Azure進行驗證。 請確定您已安裝 Azure Developer CLI。 此外,您必須提供一些組態值,讓布建邏輯可以代表您建立資源。
應用程式主機配置 API
應用程式主機提供一組 API 來表示 Azure 資源。 這些 API 作為擴充方法的形式提供,用於 .NET AspireAzure 主機庫,並擴充 IDistributedApplicationBuilder 介面。 當您將 Azure 資源新增至應用程式主機時,它們會隱含地新增適當的布建功能。 換句話說,您不需要直接呼叫任何布建 API。
當應用程式主機啟動時,會執行下列布建邏輯:
-
Azure
組態區段已驗證。 - 儀錶板和應用程式主機在輸出無效時會提供提示,指出有什麼遺漏。 如需詳細資訊,請參閱 遺漏的組態值提示。
- 當有條件地布建有效的 Azure 資源時:
- 如果指定資源的 Azure 部署不存在,則會建立並設定為部署。
- 上述部署的設定會加上總和檢查碼的戳記,作為僅在必要時支援布建資源的方法。
使用現有的 Azure 資源
應用程式主機會自動管理 Azure 資源的配置。 在應用程式主機首次執行時,它會配置應用程式主機中指定的資源。 除非應用程式主機設定變更,否則後續執行不會再次布建資源。
如果您已在應用程式主機外部佈建 Azure 資源,而且想要使用這些資源,您可以使用 AddConnectionString API 提供連接字串,如下列 Azure Key Vault 範例所示:
// Service registration
var secrets = builder.ExecutionContext.IsPublishMode
? builder.AddAzureKeyVault("secrets")
: builder.AddConnectionString("secrets");
// Service consumption
builder.AddProject<Projects.ExampleProject>()
.WithReference(secrets)
上述代碼段示範如何將 Azure Key Vault 新增至應用程式主機。
AddAzureKeyVault API 可用來將 Azure Key Vault 新增至應用程式主機。
AddConnectionString
API 可用來提供應用程式主機的連接字串。
或者,對於某些 Azure 資源,您可以選擇使用 RunAsEmulator
API 以模擬器身分執行它們。 此 API 適用於 Azure Cosmos DB 和 Azure 記憶體 整合。 例如,若要以模擬器身分執行 AzureAzure Cosmos DB,您可以使用下列代碼段:
var cosmos = builder.AddAzureCosmosDB("cosmos")
.RunAsEmulator();
RunAsEmulator API 設定 Azure Cosmos DB 資源,然後使用 Azure Cosmos DB 模擬器及 NoSQL API 進行模擬。
.NET Aspire Azure 主機整合
如果您在應用程式主機中使用 Azure 資源,則會使用一或多個 .NET AspireAzure 裝載整合。 這些托管庫提供擴充方法給 IDistributedApplicationBuilder 介面,以便將 Azure 資源添加到您的應用程式主機。
配置
在本機開發環境中使用 Azure 資源時,您需要提供必要的配置值。 組態值是在 [Azure
] 區段下指定:
-
SubscriptionId
:Azure 訂用帳戶標識碼。 -
AllowResourceGroupCreation
:布爾值,指出是否要建立新的資源群組。 -
ResourceGroup
:要使用的資源群組名稱。 -
Location
:要使用的 Azure 區域。
請考慮下列範例 appsettings.json 組態:
{
"Azure": {
"SubscriptionId": "<Your subscription id>",
"AllowResourceGroupCreation": true,
"ResourceGroup": "<Valid resource group name>",
"Location": "<Valid Azure location>"
}
}
重要
建議將這些值儲存為應用程式秘密。 如需詳細資訊,請參閱 管理應用程式秘密。
設定必要值之後,您就可以開始在本機開發環境中布建 Azure 資源。
Azure 配置憑證存儲
.NET Aspire 應用程式主機會使用憑證存放區來進行 Azure 資源的驗證和授權。 根據您的訂閱方案,多租戶布建情境可能需要正確的憑證存放區。
使用 📦Aspire.Hosting.Azure NuGet 套件已安裝,如果您的應用程式主機依賴 Azure 資源,則預設的 Azure 認證存放區會依賴 DefaultAzureCredential。 若要變更此行為,您可以在 appsettings.json 檔案中設定認證存放區值,如下列範例所示:
{
"Azure": {
"CredentialSource": "AzureCli"
}
}
如同所有 組態型設定,您可以使用替代提供者來設定這些設定,例如 使用者密碼 或 環境變數。
Azure:CredentialSource
值可以設定為下列其中一個值:
-
AzureCli
:委派給 AzureCliCredential。 -
AzurePowerShell
:委派給 AzurePowerShellCredential。 -
VisualStudio
:委派給 VisualStudioCredential。 -
VisualStudioCode
:委派給 VisualStudioCodeCredential。 -
AzureDeveloperCli
:委派給 AzureDeveloperCliCredential。 -
InteractiveBrowser
:委派給 InteractiveBrowserCredential。
提示
如需 Azure SDK 驗證和授權的詳細資訊,請參閱 Azure 身分識別庫中的 認證鏈,以取得 .NET。
工具支援
在 Visual Studio中,您可以使用連線服務來設定預設 Azure 布建設定。 選取應用程式主機專案,以滑鼠右鍵按兩下 [連線服務] 節點,然後選取 [Azure 資源布建設定]:
這會開啟對話框,您可以在其中設定 Azure 布建設定,如下列螢幕快照所示:
缺少組態值提示
遺失 Azure
組態區段、遺漏值或無效時,.NET.NET Aspire 儀錶板 提供實用的提示。 例如,考慮一個應用程式主機,該主機缺少 SubscriptionId
組態值,但嘗試使用 Azure Key Vault 資源。 [資源] 頁面會指出 狀態遺漏的訂用帳戶組態:
此外,主控台記錄也會 顯示這項資訊,不妨參考以下的螢幕截圖:
已知限制
以這種方式布建 Azure 資源之後,您必須手動清除 Azure 入口網站中的資源,因為 .NET Aspire 不提供刪除 Azure 資源的內建機制。 若要達成此目的,最簡單的方式是刪除已設定的資源群組。 這可以在 Azure 入口網站 或通過使用 Azure 命令行界面來完成:
az group delete --name <ResourceGroupName>
以您想要刪除的資源群組名稱取代 <ResourceGroupName>
。 如需詳細資訊,請參閱 az group delete。