我是 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 控制台本身)。
仍然没有完成连接,也没有收到任何答复。