通过AWS-IoT Core连接后,无法在RaspberryPi上更改主题名称

时间:2019-01-18 00:52:00

标签: python amazon-web-services raspberry-pi aws-iot

我已成功将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

的直接副本。

我要做的就是能够手动设置主题名称。有人对这个问题有见识吗?

2 个答案:

答案 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。