Arduino电位计数据AWS MQTT网页访问方案及Node-RED连接故障排查
以下是几种实用的实现方式:
AWS IoT Core + AppSync + 前端框架
创建AppSync GraphQL API,将数据源关联到AWS IoT MQTT主题,定义订阅类型的Schema。前端通过AppSync官方SDK连接API,订阅指定主题的实时数据,直接渲染到网页界面。这种方式无需自行搭建后端,由AWS负责消息转发和API管理。AWS IoT Core + Lambda + 静态网站(S3+CloudFront)
用Lambda函数订阅MQTT主题,将收到的电位计数据存入DynamoDB。静态网站部署在S3(搭配CloudFront加速),通过API Gateway调用Lambda读取DynamoDB的历史数据;如果需要实时推送,可改用WebSocket API,Lambda将MQTT消息转发到WebSocket连接,前端建立WS连接接收实时数据。前端直接通过MQTT.js连接AWS IoT
前端使用mqtt.js库,通过AWS IoT提供的WebSocket端点连接MQTT服务。需要配置正确的AWS IoT端点、设备证书/私钥、根证书,同时在AWS IoT控制台配置CORS规则,允许前端域名的跨域请求。这种方式无需中间服务,直接从前端获取实时数据。
按以下步骤定位并解决问题:
核对节点配置信息
确认MQTT节点的AWS IoT端点、Client ID完全正确;上传的设备证书(.crt)、私钥(.key)、Amazon根证书(Root CA 1)没有格式错误或内容缺失。检查IAM权限配置
CloudFormation部署的Node-RED实例(EC2/ECS等)所关联的IAM角色,必须包含iot:Connect、iot:Subscribe、iot:Receive、iot:Publish权限,且策略已正确关联到该角色。验证网络连通性
检查Node-RED实例所在的安全组/防火墙,是否开放了443端口(MQTT over WebSocket)或8883端口(MQTT over TLS);测试实例能否访问AWS IoT端点,排除网络不通的问题。查看Node-RED日志
打开Node-RED的控制台日志或实例的系统日志,查找具体的错误提示(比如证书验证失败、权限拒绝、连接超时等),根据错误信息针对性修复。
内容的提问来源于stack exchange,提问作者Mahad asif

