如何在CosmosDBTrigger等触发器特性中配置非字符串类型参数值
非字符串类型Cosmos触发器参数配置方案
你不需要手动修改自动生成的function.json文件,只要将Microsoft.Azure.WebJobs.Extensions.CosmosDB扩展包升级到3.0.10及以上版本,即可直接用和字符串参数相同的%配置键%语法实现非字符串类型的参数配置,运行时会自动完成类型转换。
步骤1:修改触发器特性代码
将需要动态配置的数值/布尔参数值替换为%包裹的配置键名,示例如下:
[FunctionName("SomeFunction")] public async Task Run( [CosmosDBTrigger( databaseName: "%CosmosDatabaseName%", collectionName: "%CosmosCollectionName%", ConnectionStringSetting = "CosmosConnectionString", CreateLeaseCollectionIfNotExists = true, LeaseCollectionName = "_leases", FeedPollDelay = "%FeedPollDelayMS%", MaxItemsPerInvocation = "%MaxItemsPerInvocation%", LeaseCollectionPrefix = "Leases_")] IReadOnlyList<Document> changedDocuments, ILogger log, [Blob("%BlobContainerName%", Connection = "BlobConn")] CloudBlobContainer destinationContainer) { // 业务逻辑 }
步骤2:添加对应配置
本地开发环境
在local.settings.json的Values节点下添加对应键值对,数值直接写字符串形式即可:
{ "Values": { "CosmosConnectionString": "你的Cosmos连接串", "BlobConn": "你的Blob存储连接串", "CosmosDatabaseName": "数据库名", "CosmosCollectionName": "集合名", "BlobContainerName": "Blob容器名", "FeedPollDelayMS": "20000", "MaxItemsPerInvocation": "20" } }
Azure部署环境
直接在函数App的「配置」-「应用程序设置」中添加上述键值对即可,配置方式和字符串参数完全一致。
注意事项
- 如果配置值无法转换为参数对应类型,函数启动阶段就会抛出明确的类型转换错误,可提前排查配置问题
- 整个过程不需要修改自动生成的
function.json文件,完全符合官方不建议手动修改该文件的要求
内容的提问来源于stack exchange,提问作者user1354455
相关产品推荐
相关产品推荐

