每次设备连接并发送数据时,是不是使用带有 aws-iot (wss) 的自定义授权方创建一个新设备?
Posted
技术标签:
【中文标题】每次设备连接并发送数据时,是不是使用带有 aws-iot (wss) 的自定义授权方创建一个新设备?【英文标题】:Does using a custom authorizer with aws-iot (wss) create a new device everytime a device connects and sends data?每次设备连接并发送数据时,是否使用带有 aws-iot (wss) 的自定义授权方创建一个新设备? 【发布时间】:2019-06-17 03:50:55 【问题描述】:考虑到有大量移动设备(android 和 ios)需要通过 MQTT custom authorizer to check for valid token based on business logic 向 AWS-IoT 发送数据,因此需要实施。
参考IoT Apps with AWS IoT and Websockets,幻灯片 56/60 显示了使用 lambda 创建和附加策略的注册过程。
这是否表示 lambda 将创建新的 AWS-IoT 设备并将策略附加到该设备?这会导致每次新用户注册时都会创建新的 AWS-IoT 设备?
【问题讨论】:
【参考方案1】:参考How to Use Your Own Identity and Access Management Systems to Control Access to AWS IoT Resources ,您可以创建自定义授权者。完成后,您可以使用aws/aws-iot-device-sdk-js 使用this piece of code 来测试授权人。
使用自定义授权者不需要您创建或拥有任何 在您的帐户中注册的内容。
根据 AWS 的物联网定价,您需要为连接、消息等付费。
然而,这是一个 mqtt over wss 实现,而不是一个 mqtt 唯一实现。到目前为止,仅 mqtt 的实现似乎在连接到 AWS-IoT 代理期间仍需要证书。
【讨论】:
【参考方案2】:扩展 user2967920 的回答:
-
使用 AWS IoT Core 时无需创建设备。 AWS Amplify PubSub 实际上使用 IoT 作为通用 MQTT 代理。不会使用自定义授权器创建任何设备*。
您的自定义授权方返回的策略未保留。将其视为为特定连接创建的动态临时策略。
有关在 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 一样。
【讨论】:
以上是关于每次设备连接并发送数据时,是不是使用带有 aws-iot (wss) 的自定义授权方创建一个新设备?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Node.js 中使用带有 API 网关的 AWS Lambda 发送二进制响应? [复制]