【问题标题】:Azure functions with IoT hub as a trigger not getting called将 IoT 中心用作未调用触发器的 Azure 功能
【发布时间】:2021-06-07 00:41:01
【问题描述】:

我是 Azure IoT 中心的新手。我注册了 Azure 的免费套餐。我正在尝试测试一个非常简单的场景:

Raspbary Pi 模拟器 -----> IoT 中心 ----> Azure Function

我已经设置了 IoT Hub 和 Pi 模拟器。我正在将数据从模拟器发送到 IoT 中心,我可以看到 IoT 中心接收到消息,并且接收到的消息计数正在上升,因此遥测数据正在到达 IoT 中心。

然后我用以下参数创建了一个函数应用:

  • 运行时栈---->.Net
  • 版本 ----------> 3.1
  • 计划类型-------->应用服务计划

然后我使用 IoT Hub 触发器模板在此函数应用程序中创建了一个函数。 我创建了一个新的事件中心连接并选择了 IoT 中心作为选项,并从列表中选择了我的 IoT 中心。这为我创建了一个函数,它具有将任何传入消息打印到日志的标准实现。

我尝试通过从门户发送测试消息来测试门户中的功能,但该功能从未被触发,也没有打印任何日志。我确实得到了接受的 HTTP 代码 202,但从未调用过该函数。该函数的执行计数保持在 0。

我还尝试通过将遥测数据从模拟器发送到 IoT 中心来测试该功能。我的 IoT 中心消息数量增加,但该函数从未被调用。

如果您能提供任何帮助我调试此问题的建议,我们将不胜感激。

谢谢

卡里姆

图片:

【问题讨论】:

  • 确保您使用的是正确的连接字符串,如此答案中所述:stackoverflow.com/questions/52743156/…
  • 要检查的另一件事:使用专用的消费者组,以防系统上的其他东西正在使用默认的消费者组。
  • 感谢 Stefan 的快速响应。我在原始问题中添加了 2 张图片。图 1 显示了事件触发器屏幕中的连接字符串,图 2 显示了函数应用配置中的连接字符串。这是在我创建函数时自动添加的。此值设置为 IoT 中心 -> 内置端点 -> 事件中心兼容端点。我还尝试使用它创建一个新的消费者组,但这没有帮助。需要注意的一件事是,我的帐户中没有任何存储空间。这是功能工作所必需的吗?如果是,那么我要创建什么类型?
  • 我刚刚从头开始设置,一切正常。还有两个问题可以缩小范围:1. 您的 IoTHub 中是否配置了任何路由? 2. 如果您关闭功能应用程序,您是否看到来自 IoTHub 的遥测消息(运行 'az iot hub monitor-events -n ')

标签: azure azure-iot-hub


【解决方案1】:

我也被同样的问题困住了一段时间。

为了帮助调试,您可以使用 VSCode 中的 Azure Functions 扩展检查函数的日志(遗憾的是,我还没有找到任何其他适合我的方式)。

对我来说,日志有两个错误:

[Error] Microsoft.Azure.WebJobs.Host: Error indexing method 'Functions.IoTHub_EventHub1'. Microsoft.Azure.WebJobs.EventHubs: Value cannot be null. (Parameter 'receiverConnectionString').
[Error] Microsoft.Azure.WebJobs.Host: Error indexing method 'Functions.IoTHub_EventHub1'. Microsoft.WindowsAzure.Storage: Value cannot be null. (Parameter 'connectionString').

事实证明,这两个问题都可以通过添加指向存储帐户的链接来解决,如this answer 中所述。

最后,名为AzureWebJobsStorage 的新应用程序设置应出现在您的功能配置中like this

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多