我已成功将RaspberryPi连接到AWS IoT Core,并能够毫无问题地发布/订阅“ sdk / test / Python”主题。但是,每当我将主题更改为自定义值时,都会得到“ subscribeTimeoutException()”或“ publishTimeoutException()”。
我已经运行了命令:
python aws-iot-device-sdk-python/samples/basicPubSub.py -e xxxxxxxxx-xxx.iot.us-west-2.amazonaws.com -r root-CA.crt -c RaspberryPi.cert.pem -k RaspberryPi.private.key
但是,当我尝试使用以下命令手动选择主题时,出现上述错误。
python aws-iot-device-sdk-python/samples/basicPubSub.py -e xxxxxxxxx-xxx.iot.us-west-2.amazonaws.com -r root-CA.crt -c RaspberryPi.cert.pem -k RaspberryPi.private.key -t testTopic
我尝试的另一种尝试是手动更改第46行的“默认”值,我也遇到相同的异常。
在AWS IoT控制台内,我可以发布/订阅“ testTopic”,这使我相信我可能缺少权限?
该代码是https://github.com/aws/aws-iot-device-sdk-python/blob/master/samples/basicPubSub/basicPubSub.py
的直接副本。我要做的就是能够手动设置主题名称。有人对这个问题有见识吗?
答案 0 :(得分:0)
尝试:
test / testTopic
希望为任意主题订阅添加任意层次结构就足够了
答案 1 :(得分:0)
经过数小时的挖掘,我发现您无法使用默认权限创建任意主题名称。确保已将证书所附加的策略附加到设备所附加的证书,以授予对所需主题名称的访问权限。在这种情况下,默认策略允许您发布/订阅主题“ sdk / test / Python”,“ sdk / test / java”,“ topic_1”和“ topic_2”。
如果您希望具有任意的“按需”主题名称,请在策略中的每个权限上添加通配符,例如:
"arn:aws:iot:us-west-2:000000000000:<topic/topicfilter/client/etc...>/*"
位于资源下。另请注意,请在AWS IoT控制台中激活您的证书以避免SSLError。