Cosmos db change feed trigger在函数进入睡眠状态后不触发



我有一个函数在本地工作得很好,但在Azure中不会触发,除非该函数是" awake ";该函数只是将项从一个容器复制到另一个容器,交换主键和id列(作为最终一致的辅助索引)。这个应用程序中有两个函数,它们都是Cosmos触发器(不同的源容器和租约前缀);我所有的其他功能都在其他应用程序中。

该函数在Linux消费计划中,通过GitHub ActionAzure/functions-action@v1部署,它使用zipdeploy,其中应该是同步触发器。在该容器上没有其他函数侦听(本地实例侦听模拟器),并且该函数具有唯一的租约前缀。

如果我在门户中查看功能app(即使只是概览页面),该功能也会"唤醒"。并且可以很好地处理所有Cosmos DB项目。如果我随后关闭Overview页面,等待~30分钟,并更改监视容器中的项,则该函数不会触发。Azure Monitor日志中没有任何内容,目标容器中相应的项目也不会更改。我可以等待几(10)分钟并刷新,但日志或目标容器中仍然没有任何内容。然后,当我重新打开Overview页面时,该函数立即被触发,目标容器中的项目几乎立即被更新;Azure Monitor日志在2-3分钟后显示(正常的延迟量)。此行为可100%重复。

我已经多次检查了所有的故障排除建议,但我没有看到任何有用的。

如何在没有我在门户中观察到它的情况下触发此函数?

原来我有我的连接字符串错误。我在ConnectionStrings中有CosmosDb触发连接字符串,当它应该在AppSettings中。

函数实际上会在本地工作(如果它已经在云中运行),因为绑定在两个地方查找:应该在的AppSettings,然后回落到ConnectionStrings。然而,当函数"睡眠"时,Azure刻度控制器只会监视AppSettings,所以这就是它永远不会醒来的原因。

最新更新