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 中心直接连接到您的函数,而无需在两者之间使用事件中心或服务总线。
我正在尝试将 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 中心直接连接到您的函数,而无需在两者之间使用事件中心或服务总线。