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

时间:2018-10-08 12:26:23

标签: azure configuration azure-functions

现在,我们可以使用.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文件中,并将其添加到类似local.settings.json

的load语句中。
.AddJsonFile("my-custom-settings.json", optional: false, reloadOnChange: true)

但是此文件必须包含在部署中,并且不能安全存储。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

自2019年11月起,此功能尚未正式支持。

  

Warning

     

避免尝试从“消费”计划中的文件中读取值,例如local.settings.json或appsettings。{environment} .json。由于托管基础架构无法访问配置信息,因此随着应用程序的扩展,从这些文件中读取的与触发器连接有关的值将不可用。

建议这样做的博客太多,并且如果您只有一个实例,这似乎可能会奏效,但是ScaleController触发扩展后,新实例将无法找到配置文件。

职能团队is considering possible Options(大声笑)

还可以选择使用新的App Configuration服务,但该服务当前处于预览状态,并且并非在所有Azure区域都可用。

将配置放在blob存储中并在启动时加载它可能更简单? (您的Blob存储区连接字符串将需要包含在env变量中)