快速入門:使用 Azure 應用程式組態建立 Azure Functions 應用程式
在本快速入門中,您會將 Azure 應用程式組態服務納入 Azure Functions 應用程式中,以集中儲存和管理您所有的應用程式設定 (與您的程式碼分開)。
必要條件
- 具有有效訂用帳戶的 Azure 帳戶。 免費建立一個。
- 應用程式組態存放區。 建立存放區。
- Visual Studio,其中包含 Azure 開發工作負載。
- Azure Functions 工具 (如果您尚未與 Visual Studio 一併安裝)。
新增索引鍵/值
將下列索引鍵/值新增至應用程式組態存放區,並保留標籤和內容類型的預設值。 如需如何使用 Azure 入口網站或 CLI 將索引鍵/值新增至存放區的詳細資訊,請移至建立索引鍵/值。
機碼 | 值 |
---|---|
TestApp:Settings:Message | Azure 應用程式組態的值 |
建立 Functions 應用程式
Visual Studio 中的 Azure Functions 專案範本會建立可發行至 Azure 中函式應用程式的 C# 類別庫專案。 您可以使用函式應用程式將多個函式群組為邏輯單位,以方便管理、部署、調整和共用資源。
在 Visual Studio 功能表中,選取 [檔案] > [新增] > [專案]。
在 [建立新專案] 的搜尋方塊中輸入函式,選擇 [Azure Functions] 範本,然後選取 [下一步]。
在 [設定您的新專案] 中,輸入專案的專案名稱,然後選取 [建立]。 函式應用程式名稱必須是有效的 C# 命名空間,因此不會使用底線、連字號或任何其他非英數字元。
針對 [建立新的 Azure Functions 應用程式] 設定,請使用下表中的值:
設定 值 Description .NET 版本 .NET 6 已隔離 此值會建立在隔離式背景工作處理序中執行的函式專案。 隔離式背景工作處理序支援其他非 LTS 版本的 .NET 和 .NET Framework。 如需詳細資訊,請參閱 Azure Functions 執行階段版本概觀。 函式範本 HTTP 觸發程序 此值會建立 HTTP 要求所觸發的函式。 儲存體帳戶 (AzureWebJobsStorage) 儲存體模擬器 因為 Azure 中的函數應用程式需要儲存體帳戶,所以當您將專案發佈至 Azure 時,就會指派或建立一個儲存體帳戶。 HTTP 觸發程式不會使用 Azure 儲存體帳戶連接字串;所有其他觸發程式類型都需要有效的 Azure 儲存體帳戶連接字串。 授權等級 匿名 建立的函式可以由任何用戶端觸發,而不需提供金鑰。 此授權設定可以讓測試新函式變得簡單。 如需金鑰和授權的詳細資訊,請參閱 授權金鑰和 HTTP 和 Webhook 繫結。 請確定您已將 [授權層級] 設定為 [匿名]。 如果您選擇函式的預設層級,必須在要求中提供函式金鑰以存取您的函式端點。
選取 [建立] 以建立函式專案和 HTTP 觸發程序函數。
連線至應用程式組態存放區
此專案會在 .NET Azure Functions 中使用相依性插入,並新增 Azure 應用程式組態作為額外的組態來源。 Azure Functions 支援執行同處理序或隔離處理序。 挑選符合您需求的處理序。
以滑鼠右鍵按一下專案,然後選取 [管理 NuGet 套件]。 在 [瀏覽] 索引標籤上,搜尋下列 NuGet 套件並新增至您的專案。
- Microsoft.Extensions.Configuration.AzureAppConfiguration 4.1.0 版或更新版本
- Microsoft.Azure.Functions.Extensions 1.1.0 版或更新版本
新增程式碼以連線至 Azure 應用程式組態。
使用下列程式碼,新增 Startup.cs 檔案。 其會定義名為
Startup
的類別,以實作FunctionsStartup
抽象類別。 元件屬性用來指定 Azure Functions 啟動期間所使用的類型名稱。藉由呼叫
AddAzureAppConfiguration()
,覆寫ConfigureAppConfiguration
方法,並將 Azure 應用程式組態提供者新增為額外的組態來源。Configure
方法會保留空白,因為您目前不需要註冊任何服務。using System; using Microsoft.Azure.Functions.Extensions.DependencyInjection; using Microsoft.Extensions.Configuration; [assembly: FunctionsStartup(typeof(FunctionApp.Startup))] namespace FunctionApp { class Startup : FunctionsStartup { public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder) { string cs = Environment.GetEnvironmentVariable("ConnectionString"); builder.ConfigurationBuilder.AddAzureAppConfiguration(cs); } public override void Configure(IFunctionsHostBuilder builder) { } } }
開啟 Function1.cs,如果尚未存在,請新增下列命名空間。
using Microsoft.Extensions.Configuration;
新增或更新用於透過相依性插入取得
IConfiguration
執行個體的建構函式。更新
Run
方法,以讀取組態中的值。[FunctionName("Function1")] public async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); // Read configuration data string keyName = "TestApp:Settings:Message"; string message = _configuration[keyName]; return message != null ? (ActionResult)new OkObjectResult(message) : new BadRequestObjectResult($"Please create a key-value with the key '{keyName}' in App Configuration."); }
注意
Function1
類別和Run
方法不得為靜態。 如果已自動產生static
修飾元,請予以移除。
在本機測試函式
設定名為 ConnectionString 的環境變數,並將其設定為應用程式組態存放區的存取金鑰。 如果您使用 Windows 命令提示字元,請執行下列命令,然後重新啟動命令提示字元以讓變更生效:
setx ConnectionString "connection-string-of-your-app-configuration-store"
如果您使用 Windows PowerShell,請執行下列命令:
$Env:ConnectionString = "connection-string-of-your-app-configuration-store"
如果您使用 macOS 或 Linux,請執行下列命令:
export ConnectionString='connection-string-of-your-app-configuration-store'
按 F5 測試您的函式。 如果出現提示,請接受 Visual Studio 所發出要下載及安裝 Azure Functions Core (CLI) 工具的要求。 您可能也需要啟用防火牆例外狀況,工具才能處理 HTTP 要求。
從 Azure Functions 執行階段輸出複製函式的 URL。
將 HTTP 要求的 URL 貼到您的瀏覽器位址列。 下圖顯示瀏覽器中對於函式傳回之本機 GET 要求所做出的回應。
清除資源
如果您不想繼續使用本文中建立的資源,請刪除在此處建立的資源群組,以避免產生費用。
重要
刪除資源群組是無法回復的動作。 資源群組和其中的所有資源都將被永久刪除。 請確定您不會誤刪錯誤的資源群組或資源。 如果您是在包含需保留其他資源的資源群組內部,建立本文的資源,則可以從每個資源各自的窗格中個別刪除每個資源,而不必刪除整個資源群組。
- 登入 Azure 入口網站,然後選取 [資源群組]。
- 在 [依名稱篩選] 方塊中,輸入您資源群組的名稱。
- 在結果清單中,選取資源群組名稱以查看概觀。
- 選取 [刪除資源群組]。
- 系統將會要求您確認是否刪除資源群組。 輸入您資源群組的名稱以進行確認,然後選取 [刪除]。
不久後,系統便會刪除該資源群組及其所有的資源。
下一步
在本快速入門中,您已建立新的應用程式組態存放區,並透過應用程式組態提供者將其與 Azure Functions 應用程式搭配使用。 若要了解如何將 Azure Functions 應用程式更新為以動態方式重新整理組態,請繼續進行下一個教學課程。
若要了解如何使用 Azure 受控服務識別來簡化對應用程式組態的存取,請繼續進行下一個教學課程。