Azure - 调试物联网中心 - 函数触发器

Azure - Debugging Iot Hub - Function trigger

我正在尝试将 Azure IoT 中心遥测的有效负载传递给一个函数。我尝试使用 this 文档,但我一定遗漏了一些东西。当我看到数据通过时,我的功能没有执行。我试图在两者之间放置一个服务总线,因此我在我的 IoT 中心创建了一个消息路由并根据相同的文档使用它,但用于服务总线而不是 IoT 中心。我在 IoT 中心和服务总线中看到了来自模拟设备的消息,但不知何故,该功能未执行。我也不知道如何调试这个问题,为什么函数没有执行。非常感谢任何有关调试提示或文档提示的帮助。

我在 host.json 中添加了服务总线参数:

...
        "serviceBus": {
            "prefetchCount": 100,
            "messageHandlerOptions": {
                "autoComplete": true,
                "maxConcurrentCalls": 32,
                "maxAutoRenewDuration": "00:05:00"
            },
            "sessionHandlerOptions": {
                "autoComplete": false,
                "messageWaitTimeout": "00:00:30",
                "maxAutoRenewDuration": "00:55:00",
                "maxConcurrentSessions": 16
            },
            "batchOptions": {
                "maxMessageCount": 1000,
                "operationTimeout": "00:01:00",
                "autoComplete": true
            }
        }
...

并在functions.json中设置正确的触发器绑定:

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "name": "msg",
      "type": "serviceBusTrigger",
      "direction": "in",
      "queueName": "[MyQueueName]",
      "connection": "Endpoint=sb://[MyServiceBusName].servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=[MyServiceBusSAS]"
    }
  ]
}

所以说明没有告诉你,我做错了什么,就是你应该给你的连接一个任意的名字,比如 queue_conn_str。然后在 Azure 门户上,转到您的函数应用程序,并在那里使用实际的连接字符串 (Endpoint...) 和相同的名称 (queue_conn_str) 设置应用程序设置。 有了它,您实际上可以将 IoT 中心直接连接到您的函数,而无需在两者之间使用事件中心或服务总线。