如何在 Azure 函数中处理 IoTHub 文件上传通知

How can I process IoTHub file upload notifications in an Azure Function

我们目前有一些设备使用文件上传功能通过 Azure IoTHub 将文件发送到 Azure。

理想情况下,我们会有一个 Azure Functions,它会在上传新文件时触发。我们知道 fileuploadnotifications rest API 但是我们需要使用定时器触发的 Azure 函数并需要轮询此 API.

有没有办法让IoTHub在有新文件上传时触发azure功能?

编辑 1

我只是尝试将函数连接到事件中心,但根据 Matt Mason - MSFT 的建议,我使用了 messages/servicebound/fileuploadnotifications 而不是事件中心名称 messages/events。在这个绑定到 fileNotifications 路径的函数中,我只收到了我发送到 IoTHub 的消息,没有收到文件上传通知。请参阅下面的屏幕截图。

编辑 - 遗憾的是事件中心不支持 FileUploadNotification api。但是,您可以通过在文件上传时向事件中心兼容端点发送设备消息来解决此问题,请参阅此处:

https://social.msdn.microsoft.com/Forums/en-US/e0cc88e6-9592-4f4f-ba25-8fa4afa2fcf1/consume-iot-hub-file-upload-notifications-as-triggered-events?forum=azureiothub


查看 FileUploadNotifications api,它似乎是一个面向服务的端点:

As explained in Endpoints, IoT Hub delivers file upload notifications through a service-facing endpoint (/messages/servicebound/fileuploadnotifications) as messages.

我相信您将能够按照 these instructions 将函数连接到事件中心,但不要使用事件中心名称 messages/events,而是使用 messages/servicebound/fileuploadnotifications.

一种直接的方法是为 Azure 函数创建一个 EventGrid 订阅,以订阅将通过 IoT 中心上传文件的容器上的“Blob Created”事件。