每次设备连接和发送数据时,使用带有 aws-iot (wss) 的自定义授权器是否会创建一个新设备?

Does using a custom authorizer with aws-iot (wss) create a new device everytime a device connects and sends data?

考虑到有一堆移动设备(Android 和 iOS)需要通过 MQTT 向 AWS-IoT 发送数据 custom authorizer to check for valid token based on business logic 将要实施。

参考 IoT Apps with AWS IoT and Websockets,幻灯片 56/60 显示了使用 lambda 创建和附加策略的注册过程。

这是否表示 lambda 将创建一个新的 AWS-IoT 设备并将策略附加到该设备?这会导致每次新用户注册时创建一个新的 AWS-IoT 设备?

参考如何使用您自己的身份和访问管理系统来控制对 AWS IoT 资源的访问 ,您可以创建自定义授权方。完成后,您可以使用 aws/aws-iot-device-sdk-js to test out the authorizer by using this piece of code.

  • 使用自定义授权方不需要您创建或拥有任何 在您的帐户中注册的东西。

  • 您将根据 AWS 的 IoT 定价为您的连接、消息等付费。

然而,这是基于 wss 实现的 mqtt,而不是仅 mqtt 实现。截至目前,仅 mqtt 实现似乎在连接到 AWS-IoT 代理期间仍然需要证书。

扩展用户 2967920 的回答:

  1. 使用 AWS IoT Core 时无需创建设备。 AWS Amplify PubSub 实际上将物联网用作 general-purpose MQTT 代理。使用自定义授权方*不会创建任何设备。
  2. 您的自定义授权方返回的策略未保留。将其视为为特定连接创建的动态 ad-hoc 策略。

有关在 Android 和 iOS 上使用 AWS IoT 的示例,请查看 AWS Amplify PubSub(在内部使用 AWS IoT Core)的 documentation。在 iOS:

iotDataManager.connectUsingWebSocket(withClientId: uuid,
                                     cleanSession: true,
                                     customAuthorizerName: "<name-of-the-custom-authorizer>",
                                     tokenKeyName: "<key-name-for-the-token>",
                                     tokenValue: "<token>",
                                     tokenSignature: "<signature-of-the-token>",
                                     statusCallback: mqttEventCallback)

*显然,如果您愿意,您可以在 lambda 函数中创建设备,就像您可以使用任何其他 AWS API.