【发布时间】:2022-01-14 11:27:01
【问题描述】:
有人知道是否可以从 Azure Functions 配置刀片传递/注入 const 连接字符串(或其他配置值)吗?
以这个绑定签名为例:
[Function("APIHttpInput")]
[CosmosDBOutput("%CosmosDb%", "%CosmosContainerOut%", ConnectionStringSetting = "CosmosDBConnection", CreateIfNotExists = true)]
public static async Task<object> RunAsync(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = "cosmosin")] HttpRequestData req,
FunctionContext executionContext)
{
var logger = executionContext.GetLogger("APIHttpInput");
logger.LogInformation("C# HTTP trigger function processed a request.");
// etc...
}
它从local.settings.json 获取连接字符串,这很好,它以这种方式工作,但它们不会在默认的 CI/CD 管道中被覆盖,也不打算被推送到生产环境。
我已阅读官方文档:https://docs.microsoft.com/en-us/azure/azure-functions/functions-dotnet-dependency-injection#customizing-configuration-sources 但这不允许在绑定中使用它们,因为它们是通过 DI 传入的(这很好,但并不完全)。
另一种方法是将它们手动写入 Cosmos 并使用 DI。这不是我真正想要的,因为我有以下使用数据的函数:
[Function("APICosmosTrigger")]
//[CosmosDBOutput("%CosmosDb%", "%CosmosContainerOut%", ConnectionStringSetting = "CosmosDBConnection", CreateIfNotExists = true)]
public static void RunCosmos([CosmosDBTrigger(
databaseName: "%CosmosDb%",
collectionName: "%CosmosContainerOut%",
ConnectionStringSetting = "CosmosDBConnection",
LeaseCollectionName = "leases")] IReadOnlyList<Record> leads,
FunctionContext executionContext,
IRestClient client)
{
// do stuff...
}
希望最终结果是绑定字段(如下)可以通过配置刀片进行配置:
- “%CosmosDb%”
- "%CosmosContainerOut%"
- ConnectionStringSetting = "CosmosDBConnection"
PS:我已经看到了一些与此非常接近的问题,但没有处理绑定属性问题。
【问题讨论】:
标签: c# .net azure azure-functions azure-cosmosdb