[英]Azure Functions v2 - New .netcore Configuration and deployment
現在我們可以使用 .NETCore 非常靈活的配置引擎 - 我們可以這樣做:
private static IConfigurationRoot SetConfig(ExecutionContext executionContext)
{
return new ConfigurationBuilder()
.SetBasePath(executionContext.FunctionAppDirectory)
.AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();
}
這很棒,因為它允許您將更復雜的配置數據放入配置文件中 - 例如
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "<< removed >>",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"APPINSIGHTS_INSTRUMENTATIONKEY": "<< removed >>"
},
"MyCustomSettings": [
{
"ConnectionString": "<< removed >>",
"Folders": [
{
"ShareName": "share1",
"FolderName": "folder1"
},
{
"ShareName": "share2",
"FolderName": "folder2"
}
]
}
]
}
再次 - 好消息! 我現在可以使用 config["MyCustomSettings"] 訪問我的強類型配置
我不明白的是 - 發布功能時如何部署它。 只有值部分遷移到 Azure 函數應用程序設置。 我顯然可以將這個自定義 json 放在一個 json 文件中,並將其添加到 load 語句中,如 local.settings.json
.AddJsonFile("my-custom-settings.json", optional: false, reloadOnChange: true)
但是這個文件必須包含在部署中,並且沒有安全存儲。
有任何想法嗎?
截至 2019 年 11 月,這尚未得到官方支持。
避免嘗試從消耗計划中的 local.settings.json 或 appsettings.{environment}.json 等文件中讀取值。 從這些文件中讀取的與觸發器連接相關的值在應用擴展時不可用,因為托管基礎結構無法訪問配置信息。
有很多博客都建議這樣做,如果您只有一個實例,這似乎可行,但是一旦 ScaleController 觸發縮放,新實例將無法找到配置文件。
如果您有使用%SettingName%
語法的觸發器,它們將不會在函數縮放時起作用。
還可以選擇使用新的App Configuration服務,但它目前處於預覽狀態,並非在所有 Azure 區域都可用。
將您的配置放在 blob 存儲中並在啟動時加載它可能更簡單?
(您的 blob 存儲連接字符串需要位於 env 變量中)
到目前為止,我們能做的最好的事情是將您的“不那么秘密”的設置(比如MyThingTimeout
或ExternalEndpointAddress
)包含在一個 json 文件中,並使用.AddJsonFile(...)
並將秘密放在 KeyVault 中。 這確實會迫使您拆分配置並決定哪個去哪里。 (並確保您的觸發器僅從“值”部分/環境變量中讀取)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.