Cosmos db 更改提要触发器在功能进入睡眠状态后未触发
Cosmos db change feed trigger not firing after function goes to sleep
我有一个函数在本地运行良好,但在 Azure 中不会触发,除非该函数处于“唤醒”状态。该函数只是将项目从一个容器复制到另一个容器,交换主键和 id 列(作为最终一致的二级索引)。这个app中有两个函数,都是Cosmos触发器(不同的源容器和租用前缀);我所有的其他功能都在其他应用程序中。
该函数在 Linux 消费计划中,通过 GitHub Action Azure/functions-action@v1
, which uses zipdeploy, which should be syncing triggers 部署。没有其他函数在那个容器上监听(本地实例监听模拟器),而且这个函数有一个唯一的租用前缀。
如果我在门户中查看函数应用程序(即使只是“概述”页面),函数“唤醒”并处理所有 Cosmos DB 项目都很好。如果我随后关闭概览页面,等待约 30 分钟,并更改监视容器中的项目,则该功能不会触发。 Azure Monitor 日志中没有任何内容,目标容器中的相应项目也没有更改。我可以等待几 (10) 分钟并刷新,但日志或目标容器中仍然没有任何内容。然后当我重新打开 Overview 页面时,该函数立即触发,目标容器中的项目几乎立即更新; Azure Monitor 日志会在 2-3 分钟后显示(正常的滞后量)。此行为是 100% 可重复的。
我已经检查了所有 troubleshooting suggestions 多次,但我没有看到任何有用的信息。
如何在不在门户中观察的情况下触发此功能?
原来我的连接字符串有误。当它应该在 AppSettings
.
中时,我在 ConnectionStrings
中有 CosmosDb 触发器连接字符串
该函数实际上可以在本地运行(如果它已经在云中 运行),因为绑定正在两个 地方查找:AppSettings
它应该在哪里,然后回到 ConnectionStrings
。然而,当函数“休眠”时,Azure 比例控制器只是在监视 AppSettings
,所以它永远不会醒来。
我有一个函数在本地运行良好,但在 Azure 中不会触发,除非该函数处于“唤醒”状态。该函数只是将项目从一个容器复制到另一个容器,交换主键和 id 列(作为最终一致的二级索引)。这个app中有两个函数,都是Cosmos触发器(不同的源容器和租用前缀);我所有的其他功能都在其他应用程序中。
该函数在 Linux 消费计划中,通过 GitHub Action Azure/functions-action@v1
, which uses zipdeploy, which should be syncing triggers 部署。没有其他函数在那个容器上监听(本地实例监听模拟器),而且这个函数有一个唯一的租用前缀。
如果我在门户中查看函数应用程序(即使只是“概述”页面),函数“唤醒”并处理所有 Cosmos DB 项目都很好。如果我随后关闭概览页面,等待约 30 分钟,并更改监视容器中的项目,则该功能不会触发。 Azure Monitor 日志中没有任何内容,目标容器中的相应项目也没有更改。我可以等待几 (10) 分钟并刷新,但日志或目标容器中仍然没有任何内容。然后当我重新打开 Overview 页面时,该函数立即触发,目标容器中的项目几乎立即更新; Azure Monitor 日志会在 2-3 分钟后显示(正常的滞后量)。此行为是 100% 可重复的。
我已经检查了所有 troubleshooting suggestions 多次,但我没有看到任何有用的信息。
如何在不在门户中观察的情况下触发此功能?
原来我的连接字符串有误。当它应该在 AppSettings
.
ConnectionStrings
中有 CosmosDb 触发器连接字符串
该函数实际上可以在本地运行(如果它已经在云中 运行),因为绑定正在两个 地方查找:AppSettings
它应该在哪里,然后回到 ConnectionStrings
。然而,当函数“休眠”时,Azure 比例控制器只是在监视 AppSettings
,所以它永远不会醒来。