在本快速入門中,您會建立 Azure Functions 應用程式,並在其中使用功能旗標。 您會使用 Azure 應用程式組態的管理功能來集中儲存所有功能旗標及控制其狀態。
先決條件
- 具有有效訂用帳戶的 Azure 帳戶。 建立免費帳戶。
- 應用程式組態存放區,如 建立存放區的教學課程所示。
- Visual Studio,其中包含 Azure 開發工作負載。
新增功能旗標
將名為 Beta 的功能旗標新增至應用程式組態存放區,並保留標籤和描述的預設值。 如需如何使用 Azure 入口網站或 CLI 將功能旗標新增至存放區的詳細資訊,請移至建立功能旗標。
建立函式應用程式
選取 Azure Functions (C#) 範本,以使用 Visual Studio 建立 Azure Functions 應用程式。 此範本會引導您設定專案的基本設定。 如需詳細指示,請參閱 使用Visual Studio開發 Azure Functions。
建立函式應用程式時,請使用下表作為重要參數的參考。
| 設定 | 值 |
|---|---|
| Functions 背景工作角色 | .NET 8.0 隔離式 |
| 功能 | HTTP 觸發器 |
| 授權層級 | 匿名 |
附註
Azure 應用程式組態可以與 隔離工作者模型 或 同進程模型中的 Azure Functions 搭配使用。 本快速入門使用獨立工作者模型作為範例。 您可以在 Azure 應用程式組態 GitHub 存放庫中找到這兩個模型的完整程式碼範例。
連線至應用程式組態存放區
您可以使用 Microsoft Entra ID (建議) 或連接字串連線到您的應用程式組態存放區。
以滑鼠右鍵按一下專案,然後選取 [管理 NuGet 套件]。 在 [ 流覽] 索引標籤上,搜尋並新增下列 NuGet 套件的最新穩定版本至您的專案。
- Microsoft.Azure.AppConfiguration.Functions.Worker
- Microsoft.FeatureManagement
- Azure.Identity
開啟 Program.cs 並更新程序代碼,如下所示。 您可以藉由呼叫
AddAzureAppConfiguration方法,將 Azure 應用程式組態新增為額外的組態來源。您可以使用
DefaultAzureCredential來向 應用程式組態 存放區進行驗證。 請依照 指示 將您的憑證指派為 應用程式設定數據讀取者 角色。 在執行應用程式之前,請務必預留足夠的時間讓許可權生效。using Azure.Identity; using Microsoft.Azure.Functions.Worker.Builder; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using Microsoft.FeatureManagement; var builder = FunctionsApplication.CreateBuilder(args); // Connect to Azure App Configuration builder.Configuration.AddAzureAppConfiguration(options => { Uri endpoint = new(Environment.GetEnvironmentVariable("AZURE_APPCONFIG_ENDPOINT") ?? throw new InvalidOperationException("The environment variable 'AZURE_APPCONFIG_ENDPOINT' is not set or is empty.")); options.Connect(endpoint, new DefaultAzureCredential()) // Load all feature flags with no label. To load feature flags with specific keys and labels, set via FeatureFlagOptions.Select. // Use the default refresh interval of 30 seconds. It can be overridden via FeatureFlagOptions.SetRefreshInterval. .UseFeatureFlags(); });方法
UseFeatureFlags()會指示提供者載入功能旗標。 根據預設,所有不含標籤的功能旗標都會每隔 30 秒載入並重新整理一次。 功能旗標的選取和重新整理行為會與其他組態索引鍵/值分開設定。 您可以將動作傳遞FeatureFlagOptions至UseFeatureFlags方法,以自定義這些行為。 使用FeatureFlagOptions.Select來指定要載入的功能旗標的鍵值和標籤,並使用FeatureFlagOptions.SetRefreshInterval來覆寫預設的刷新間隔。秘訣
如果不想將功能旗標以外的任何組態載入您的應用程式中,您可呼叫
options.Select("_"),只載入不存在的虛擬機碼"_"。 根據預設,如果未呼叫任何Select方法,則會載入應用程式組態存放區中不含標籤的所有組態索引鍵/值。更新 Program.cs 檔案,藉由新增 Azure 應用程式組態中間件,在每個函式執行上啟用自動功能旗標重新整理。 您也會註冊功能管理服務,讓您稍後在函式程式代碼中插入並使用它。
// Connect to Azure App Configuration builder.Configuration.AddAzureAppConfiguration(options => { // Omitted the code added in the previous step. }); // Add Azure App Configuration middleware and feature management to the service collection. builder.Services .AddAzureAppConfiguration() .AddFeatureManagement(); // Use Azure App Configuration middleware for dynamic configuration and feature flag refresh. builder.UseAzureAppConfiguration(); builder.ConfigureFunctionsWebApplication(); builder.Build().Run();開啟 Function1.cs,然後新增下列命名空間。
using Microsoft.FeatureManagement;更新建構函式,以透過相依性插入取得 的
IVariantFeatureManagerSnapshot實例。private readonly IVariantFeatureManagerSnapshot _featureManager; private readonly ILogger<Function1> _logger; public Function1(IVariantFeatureManagerSnapshot featureManager, ILogger<Function1> logger) { _featureManager = featureManager; _logger = logger; }更新
Run方法,以根據功能旗標的狀態傳回回應訊息。[Function("Function1")] public async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequest req) { _logger.LogInformation("C# HTTP trigger function processed a request."); // Read feature flag string featureName = "Beta"; bool featureEnabled = await _featureManager.IsEnabledAsync(featureName, req.HttpContext.RequestAborted); return new OkObjectResult(featureEnabled ? $"The Feature Flag '{featureName}' is turned ON!" : $"The Feature Flag '{featureName}' is turned OFF"); }
在本機測試函式
設定環境變數。
將名為 AZURE_APPCONFIG_ENDPOINT 的環境變數設定為在 Azure 入口網站中,於市集的 總覽 底下找到的應用程式組態存放區端點。
如果您使用 Windows 命令提示字元,請執行下列命令,然後重新啟動命令提示字元以讓變更生效:
setx AZURE_APPCONFIG_ENDPOINT "<endpoint-of-your-app-configuration-store>"如果您使用 PowerShell,請執行下列命令:
$Env:AZURE_APPCONFIG_ENDPOINT = "<endpoint-of-your-app-configuration-store>"如果您使用 macOS 或 Linux,請執行下列命令:
export AZURE_APPCONFIG_ENDPOINT='<endpoint-of-your-app-configuration-store>'按 F5 測試您的函式。 如果出現提示,請接受 Visual Studio 所發出要下載及安裝 Azure Functions Core (CLI) 工具的要求。 您可能也需要啟用防火牆例外狀況,工具才能處理 HTTP 要求。
從 Azure Functions 執行階段輸出複製函式的 URL。
將 HTTP 要求的 URL 貼到瀏覽器的網址列。 下圖顯示的回應指出已停用 Beta 功能旗標。
在 Azure 入口網站中,瀏覽至您的應用程式組態存放區。 在 [作業] 底下,選取 [ 功能管理員],找出 Beta 功能旗標,並將 [已啟用] 切換設定為 [開啟]。
重新整理瀏覽器數次。 當重新整理間隔時間範圍通過時,頁面會變更以指出功能旗標 Beta 已開啟,如下圖所示。
清除資源
如果您不想繼續使用本文中建立的資源,請刪除在此處建立的資源群組,以避免產生費用。
重要事項
刪除資源群組是無法回復的動作。 資源群組和其中的所有資源都將被永久刪除。 請確定您不會誤刪錯誤的資源群組或資源。 如果您是在包含需保留其他資源的資源群組內部,建立本文的資源,則可以從每個資源各自的窗格中個別刪除每個資源,而不必刪除整個資源群組。
- 登入 Azure 入口網站,然後選取 [資源群組]。
- 在 [依名稱篩選] 方塊中,輸入您資源群組的名稱。
- 在結果清單中,選取資源群組名稱以查看概觀。
- 選取 [刪除資源群組]。
- 系統將會要求您確認是否刪除資源群組。 輸入您資源群組的名稱以進行確認,然後選取 [刪除]。
不久後,系統便會刪除該資源群組及其所有的資源。
後續步驟
在本快速入門中,您已建立功能旗標,並將其與 Azure Functions 應用程式搭配使用。
如需 .NET 功能管理程式庫的完整功能摘要,請繼續參閱下列文件。
若要深入了解如何在 Azure 應用程式設定中管理功能旗標,請繼續下列教學課程。