【问题标题】:Connecting to Amazon MQTT Broker with SSL使用 SSL 连接到 Amazon MQTT 代理
【发布时间】:2018-05-21 12:25:11
【问题描述】:

我正在尝试从不支持 SigV4 或客户端证书的客户端发布/订阅 AWS IoT MQTT 代理,它只有带有用户名和密码的 SSL。据我所知,这是不可能的,那么集成此客户端的最佳方式是什么?

目前,客户端正在发布到运行良好的 CloudMQTT 代理,但我想将 Amazon Echo/Alexa 集成到解决方案中以允许语音控制,因此我需要某种方式将其连接到我所在的 AWS IoT MQTT 代理拥有 Alexa 发布数据(使用 Lambda 和 IoT Device Shadows)。

什么是最好的方法,因为据我所知,我无法使用 SSL 将客户端连接到 AWS MQTT,它坚持使用证书。我应该尝试将 cloudMQTT 桥接到 AWS MQTT 吗?或者有什么方法可以让 Echo 发布到与亚马逊不同的 MQTT 代理?

【问题讨论】:

  • 如果您编写了 Lambda 函数,那么您应该能够发布到 CloudMQTT 或基本上您可以访问的任何内容,并拥有与之通信所需的库......不是吗?跨度>
  • 目前我的 lambda 函数只是使用 AWS IoT Device Shadow 并更新它的状态,所以实际的发布是自动发生的,我没有在我的代码中明确地这样做。我对 AWS 很陌生,在昨天之前从未使用过它,所以我可能会遗漏一些非常明显的东西
  • 进一步研究后,似乎桥接经纪人是正确的方法aws.amazon.com/blogs/iot/…
  • 是的,这看起来很有希望。试一试,如果它解决了您的问题,请返回并将其发布为您问题的答案。

标签: amazon-web-services aws-lambda mqtt alexa alexa-skills-kit


【解决方案1】:

桥接代理是一种可能的解决方案,如

所述

https://aws.amazon.com/blogs/iot/how-to-bridge-mosquitto-mqtt-broker-to-aws-iot/

这确实是一个相当复杂的过程。我使用本地 mosquitto 安装进行桥接,但无法连接并出现“未知错误”。在网上做了一些搜索后,看起来这个问题刚刚出现在最新版本的 mosquitto 中。相反,我尝试与在 AWS Linux EC2 实例上运行的 mosquitto 代理进行桥接,并且我成功地使用它进行了桥接。

我想出的更好的解决方案是修改我的 Lambda 函数以直接发布到我已经在使用的 MQTT 代理。为此,您需要包含 node.js 模块“mqtt.js”(或类似的库),它不在 aws-sdk 中,因此需要阅读一些内容来弄清楚如何去做。到目前为止,我一直在使用 AWS Lambda Web 界面内联编辑器编写代码,遗憾的是它不允许您包含外部库。相反,您需要创建自己的部署包。

以下是两个有用的链接,可帮助您开始制作自己的部署包,但它们缺少我在下面提到的一些关键信息:

https://aws.amazon.com/blogs/compute/nodejs-packages-in-lambda/

http://docs.aws.amazon.com/lambda/latest/dg/nodejs-create-deployment-pkg.html

您需要将代码写入硬盘驱动器上的文件中,然后从命令行使用 npm-install 将所需的依赖项放入代码所在的文件夹中。然后您需要压缩整个文件,以便没有包含所有内容的顶级文件夹。也就是说,您的代码需要位于 zip 的根目录中,而不是位于 zip 根目录中的文件夹中(如果您右键单击包含文件夹的代码并发送到 zip,则会得到此结果)。

还没有提到的是,如果您不再使用在线编辑器,您需要在 JavaScript 的顶部添加几行代码,以便正确解析路径。您需要添加以下内容:

var child_process = require('child_process');
var path = require('path');

然后,您可以在 lambda 函数网络编辑器中上传此代码并正常构建您的函数。很遗憾,您无法再使用内联网络编辑器,因此您需要重新压缩并再次上传以进行更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    • 1970-01-01
    • 2021-10-21
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多