是否可通过Azure Function的Cosmos DB绑定执行服务端触发器
关于Azure Function Cosmos DB绑定触发服务端触发器的明确答复
- 现有Cosmos DB Python输出绑定不支持通过
set()方法传入参数触发服务端触发器,你实测无效是符合当前绑定实现逻辑的,不是写法问题。 - Cosmos DB服务端触发器本身不存在"部署后写入自动触发"的机制,所有触发器都必须由写入操作的发起方显式在请求参数中指定要执行的触发器名称才会运行,这是Cosmos DB的固定设计。
- 你无法完全跳过Cosmos DB SDK实现这个需求,不需要重构现有入站触发器的绑定逻辑,只需要在函数中额外引入
azure-cosmos库,将写入第二个容器的逻辑从绑定的set()方法替换为SDK的create_item调用即可。
两种写法的有效性对比:
# 无效:输出绑定的set方法未封装触发器参数透传逻辑,额外传入的配置会被直接忽略 # output_doc.set(doc, {'post_trigger_include': 'trgPreValidateToDoItemTimestamp'}) # 有效:使用SDK客户端显式传入触发器参数,即可在创建文档时触发对应服务端触发器 from azure.cosmos import CosmosClient import os # 直接复用函数应用已配置的Cosmos DB连接字符串,不需要额外配置凭据 client = CosmosClient.from_connection_string(os.getenv("CosmosDBConnection")) target_container = client.get_database_client("你的数据库名").get_container_client("目标容器名") target_container.create_item( doc, post_trigger_include="trgPreValidateToDoItemTimestamp" )
内容的提问来源于stack exchange,提问作者Kory
相关产品推荐
相关产品推荐

