簡體   English   中英

Azure Functions v2 - 新的 .netcore 配置和部署

[英]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 變量中)

到目前為止,我們能做的最好的事情是將您的“不那么秘密”的設置(比如MyThingTimeoutExternalEndpointAddress )包含在一個 json 文件中,並使用.AddJsonFile(...)並將秘密放在 KeyVault 中。 這確實會迫使您拆分配置並決定哪個去哪里。 (並確保您的觸發器僅從“值”部分/環境變量中讀取)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM