跳過到頁腳內容
Iron Academy Logo
C# 應用程式
C# 應用程式

其他分類

在Azure Functions中訪問應用設置

Tim Corey
23m 53s

在今天快速發展的雲端環境中,安全且靈活地管理應用程式設置至關重要,這對於使用Azure Functions構建的開發者尤為重要。 無論您是通過Azure入口部署功能應用、使用Azure Functions Core Tools管理配置設置,還是通過Key Vault連接秘密,從一開始就正確構建您的應用程序配置是必不可少的。

在一場題為"在控制台應用中存取AppSettings,包括Secrets.json"的動手會議中,Tim Corey使用.NET生態系統講解了最佳實踐。 雖然重點是放在控制台應用上,但他的概念可以直接應用於Azure Functions應用中的功能應用設置開發和管理,尤其是在本地工作、設置專案文件或部署到應用服務時。

在本文中,我們將使用Tim的結構分解這一切,並將他的課程映射到現代的Azure Functions開發。

為什麼Azure Functions需要應用程式設置

Tim開始說明了在構建任何超出最基本的.NET應用程式時,應用設置的重要性。在Azure Function環境中訪問應用設置的需求更加明顯,因為Azure Functions運行環境期望從管理的存儲中提取配置值,例如環境變量、基於JSON的local.settings.json或Azure App Configuration。

"開發者常常想要的功能之一是訪問設置文件," Tim在0:17解釋道。

無論是API金鑰、連接字串還是功能標誌,配置的靈活性和安全性是首要任務,尤其是在部署到像Microsoft Azure這樣的雲端平台時。

使用Visual Studio創建基礎

在1:24,Tim使用Visual Studio設置了一個控制台專案,名為SettingsDemoApp。雖然Azure開發者通常會使用Azure Functions Core Tools初始化Functions專案,但Tim的方法在腳手架搭建和組織代碼方面無縫對接。 專案文件設置和代碼結構是關鍵基礎,無論您是在控制台環境中還是使用隔離工作者模型構建的隔離Azure Functions應用中。

安裝所需的NuGet Packages

從2:33開始,Tim講解了安裝四個基本的NuGet套件:

  • Microsoft.Extensions.Configuration

  • Microsoft.Extensions.Configuration.Json

  • Microsoft.Extensions.Configuration.Binder

  • Microsoft.Extensions.Configuration.UserSecrets

這反映了Azure Functions使用的應用配置系統,該系統依賴於同樣的後台套件。 Tim強調了模組化的價值:

"這實際上是反膨脹的,"他指出,因為.NET Core避免了不必要的負載,通過NuGet讓開發者選擇加入。

對於典型的功能應用,這些套件要麼預先引用,要麼很容易添加,以支援自訂邏輯的配置設置、依賴註入,或支持Key Vault和Azure App Configuration等進階用例。

添加並配置JSON設置文件

在6:12,Tim創建了一個名為appsettings.json的新文件,模仿您在Azure Functions開發中會看到的local.settings.json的結構。 他用如下鍵值對填充它:

{
  "User": {
    "FirstName": "Tim",
    "LastName": "Corey"
  },
  "StarterCountValue": 5
}

在本地Function中,開發者幾乎以相同的格式使用local.settings.json,通過註入的IConfiguration將值讀入他們的應用程序邏輯。 Tim還強調了一個關鍵步驟:將文件的複製到輸出目錄設置為"如果較新則複製",這對於確保您的配置在運行時可用至關重要。

手動構建配置管道

Tim繼續寫代碼,手動設置配置管道,使用:

var builder = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);

雖然Azure Functions運行環境會自動處理這個管道,但Tim的拆解說明了功能專案如何從不同的來源拉取值。 他使用.AddJsonFile()的方式反映了開發者在他們的Azure應用に配置local.settings.json的方式,reloadOnChange引入了在開發期間動態刷新配置設置的概念。

使用類型安全性讀取值

Tim展示了如何在11:00使用GetValue()方法讀取設置:

int count = config.GetValue<int>("StarterCountValue");

對於嵌套設置,他使用:

string firstName = config.GetValue<string>("User:FirstName");

在使用Azure Functions時,這些相同的語法格式適用。 Tim使用帶冒號分隔的鍵("User:FirstName")具有直接對應於使用雙下劃線(__)語法的環境變量的映射:

User__FirstName=Tim

這在部署到Azure App Service或通過Azure入口配置時尤其有用,您可以使用應用程式設置或基於環境的覆蓋在運行時覆蓋設置。

使用UserSecrets安全地處理機密

在15:00,Tim通過User Secrets介紹了secrets.json模式,用於存儲類似於API金鑰或連接字串的敏感數據,無需在源代碼控制中公開它們。 他展示了如何使用這行代碼將User Secrets存儲附加到您的專案:

builder.AddUserSecrets<Program>();

他強調順序很重要,User Secrets會覆蓋較早的配置來源,強調了後勝者為王的原則。 雖然Azure Functions不直接使用secrets.json,但在生產雲端環境中,您會使用Azure Key Vault,選擇性地使用托管身份驗證,以實現相同的安全覆蓋。

Tim指出,當地開發中的機密是用於在您正在生產中使用的任何安全系統中存儲真實值的替代品:

"此secrets.json是您使用來存儲真實值的任何安全系統的替代品,無論是Key Vault還是環境設置。"

運行並驗證配置

在設置好appsettings.json和secrets.json之後,Tim運行示例並驗證機密覆蓋基值。 這直接反映了Azure Functions如何從多個來源處理覆蓋:local.settings.json、Azure App Configuration、環境變量或Key Vault。

無論是通過命令行使用Azure Functions Core Tools,還是通過Visual Studio進行部署,app配置的加載順序和層次結構行為無異於Tim所述。

配置管理的最佳實踐

Tim最後建議將不常改變的配置值,例如功能標誌、頻率設置或CORS配置,保存在您的JSON文件中,而將類似於連接字符串和機密這樣的敏感數據放在安全存儲中。

這符合現代Azure Functions的最佳實踐,其中:

  • 開發者在本地Function中使用local.settings.json

  • 團隊通過Azure入口使用應用程序設置

  • 機密放置在Key Vault中

  • Azure App Configuration存儲的值幫助將設置與代碼分隔

這些來源使用依賴注入與運行環境集成,而不觸及應用程式二進制文件。

結束語

儘管Tim的影片是關於控制台應用程式的,但他教授的每項技術都無縫擴展到Azure Functions應用程式,從創建配置文件、讀取鍵、使用托管身份到通過依賴注入載入配置。 無論是使用Visual Studio進行部署、管理您的Azure賬戶,還是尋找完整的代碼示例,他的見解都直接對應於真實的雲端實踐。

Hero Worlddot related to 在Azure Functions中訪問應用設置
Hero Affiliate related to 在Azure Functions中訪問應用設置

通過分享您所愛的東西賺得更多

您是否在為使用.NET、C#、Java、Python或Node.js的開發者創建內容?將您的專業知識轉化為額外收入!

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我