Mosquitto 无法连接到 AWS

物联网 MQTT 蚊子 aws
2021-06-23 13:55:18

我是 AWS 服务的新手,我仍在研究文档。我收到了一段很长的(工作)Python 代码,用于与云交换数据。

现在我想用mosquitto. 基本上我正在尝试以下操作:

mosquitto_sub -h <id>.iot.us-east-2.amazonaws.com -p 443 -t "$aws/things/<sn>/shadow/update/delta" --cafile ./root-CA.crt --cert ./<sn>.cert.pem --key ./<sn>.private.key -d -i <sn> 

在哪里:

  • <id> 是主机的前缀
  • <sn> 是板子的序列号

该命令导致:

客户端发送 CONNECT

没有别的。我在 Python 脚本中找到了一个策略文档(在创建设备时使用):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:Connect"
      ],
      "Resource": [
        "arn:aws:iot:us-east-2:<id>:client/<sn>"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iot:Publish"
      ],
      "Resource": [
        "arn:aws:iot:us-east-2:<id>:topic/$aws/things/<sn>/shadow/update",
        "arn:aws:iot:us-east-2:<id>:topic/IoTData"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iot:Subscribe",
        "iot:Receive"
      ],
      "Resource": [
        "arn:aws:iot:us-east-2:<id>:topicfilter/$aws/things/<sn>/shadow/update/accepted",
        "arn:aws:iot:us-east-2:<id>:topicfilter/$aws/things/<sn>/shadow/update/rejected",
        "arn:aws:iot:us-east-2:<id>:topicfilter/$aws/things/<sn>/shadow/update/delta"
      ]
    }
  ]
}

但我不确定这是否“附加”到证书,甚至阅读文档我也不确定 CLI 命令是否被引用到我的目标控制台(RPi)。

更新

我从 AWS 控制台创建了一个新证书并将三个文件下载到目标:<xxx>-certificate.pem.crt, <xxx>-private.pem.key, <xxx>-public.pem.key. 然后我将策略附加到此证书(来自 AWS 控制台本身)。

仍然没有完成连接,也没有收到任何答复。

1个回答

我必须将策略附加到证书并将端口设置为 8883,因为协议是 MQTT 而不是 Websocket 上的 MQTT。