And*_*w G 8 configuration azure 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();
}
Run Code Online (Sandbox Code Playgroud)
这很棒,因为它允许您将更复杂的配置数据放入配置文件中-例如
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "<< removed >>",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"APPINSIGHTS_INSTRUMENTATIONKEY": "<< removed >>"
},
"MyCustomSettings": [
{
"ConnectionString": "<< removed >>",
"Folders": [
{
"ShareName": "share1",
"FolderName": "folder1"
},
{
"ShareName": "share2",
"FolderName": "folder2"
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
再次-好消息!现在,我可以使用config [“ MyCustomSettings”]访问我的强类型配置
我没有得到的是发布功能时如何进行部署。仅“值”部分迁移到Azure函数“应用程序设置”。我显然可以将此自定义json放在json文件中,并将其添加到类似local.settings.json的load语句中。
.AddJsonFile("my-custom-settings.json", optional: false, reloadOnChange: true)
Run Code Online (Sandbox Code Playgroud)
但是此文件必须包含在部署中,并且不能安全存储。
有任何想法吗?
截至 2019 年 11 月,此功能尚未得到官方支持。
避免尝试从消费计划上的 local.settings.json 或 appsettings.{environment}.json 等文件中读取值。随着应用程序扩展,从这些与触发器连接相关的文件中读取的值将不可用,因为托管基础设施无法访问配置信息。
有很多博客建议这样做,如果您只有一个实例,这可能会起作用,但一旦 ScaleController 触发缩放,新实例将无法找到配置文件。
如果您有使用该%SettingName%语法的触发器,它们将不会随着函数缩放而工作。
还可以选择使用新的应用程序配置服务,但它目前处于预览阶段,并非在所有 Azure 区域都可用。
将配置放入 blob 存储中并在启动时加载可能更简单?(您的 blob 存储连接字符串需要位于环境变量中)
到目前为止,我们能做的最好的事情MyThingTimeout就是将您的“不太秘密”设置(例如或ExternalEndpointAddress)包含在 json 文件中,并.AddJsonFile(...)在 KeyVault 中使用和放置秘密。这确实迫使您拆分配置并决定哪个配置放在哪里。(还要确保您的触发器仅从值部分/环境变量中读取)
| 归档时间: |
|
| 查看次数: |
273 次 |
| 最近记录: |