我有一个在本地运行良好的函数,但在Azure中不会触发,除非该函数是“醒着的”。该函数只将项目从一个容器复制到另一个容器,交换主键和id列(作为最终一致的辅助索引)。这个应用程序中有两个函数,它们都是Cosmos触发器(不同的源容器和租约前缀);我的所有其他功能都在其他应用程序中。
该函数位于Linux消费计划中,通过Azure/functions-action@v1部署,它使用同步触发器的via部署。没有其他函数侦听该容器(本地实例侦听模拟器),而且该函数无论如何都具有唯一的租约前缀。
如果我在门户中查看函数应用程序(甚至只是概述页面),函数“醒来”并处理所有Cosmos DB项都很好。如果我然后关闭概述页面,等待30分钟,并更改被监视容器中的一个项,则该函数不会触发。Azure Monitor日志中没有任何内容,相应的项在目标容器中不会更改。我可以等待几(10)分钟并刷新,而日志或目标容器中仍然没有任何内容。然后,当我重新打开概述页面时,函数立即触发,目标容器中的项几乎立即更新;Azure Monitor日志在2-3分钟后显示(正常的滞后量)。这种行为是100%可重复的。
我已经多次检查了所有的故障排除建议,但是我没有看到任何有帮助的地方。
如何让这个函数在没有我在门户中观察到的情况下触发?
发布于 2021-08-20 13:00:19
结果发现我的连接字符串出错了。当CosmosDb触发器连接字符串应该在AppSettings中时,它就在ConnectionStrings中。
这个函数实际上可以在本地工作(如果它已经在云中运行),因为绑定在两个地方都在查找:AppSettings应该在哪里,然后返回到ConnectionStrings。然而,当函数“睡眠”时,Azure比例控制器只监视AppSettings,这就是为什么它永远不会醒来。
https://stackoverflow.com/questions/66342020
复制相似问题