raspberry piとAWS IoT Coreを接続する際のメモ その2
ガイド通りにモノ~ポリシーを作成した際のデフォルトのポリシーのままだと、クライアントIDだとかトピックが制限されている。
そのままオリジナルのトピックを実行しようとすると
No handlers could be found for logger “AWSIoTPythonSDK.core.protocol.mqtt_core”
Traceback (most recent call last):・・・
AWSIoTPythonSDK.exception.AWSIoTExceptions.connectTimeoutException
とかエラーを吐く。
ガイド通りにモノ~ポリシーを作成した際のデフォルトのポリシーは以下の様
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Receive" ], "Resource": [ "arn:aws:iot:us-west-2:XXXXXXXXXXXX:topic/sdk/test/java", "arn:aws:iot:us-west-2:XXXXXXXXXXXX:topic/sdk/test/Python", "arn:aws:iot:us-west-2:XXXXXXXXXXXX:topic/topic_1", "arn:aws:iot:us-west-2:XXXXXXXXXXXX:topic/topic_2" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:us-west-2:XXXXXXXXXXXX:topicfilter/sdk/test/java", "arn:aws:iot:us-west-2:XXXXXXXXXXXX:topicfilter/sdk/test/Python", "arn:aws:iot:us-west-2:XXXXXXXXXXXX:topicfilter/topic_1", "arn:aws:iot:us-west-2:XXXXXXXXXXXX:topicfilter/topic_2" ] }, { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-west-2:XXXXXXXXXXXX:client/sdk-java", "arn:aws:iot:us-west-2:XXXXXXXXXXXX:client/basicPubSub", "arn:aws:iot:us-west-2:XXXXXXXXXXXX:client/sdk-nodejs-*" ] } ] }
arn:aws:iot:us-west-2:XXXXXXXXXXXXはポリシーを開いたときに出るポリシー ARNってやつのサーバーと識別番号
おそらくサンプルコードに使われるクライアント名とトピックの設定になっている。
テスト用にガバガバセキュリティにする際にはワイルドカードを用いて次のように変更するとどんなクライアントIDやトピックでも受け付けるようになる↓
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:*", "Resource": "*" } ] }
それでも同じエラーを吐くようなら
使用している証明書に対してポリシーがアタッチされているか確認するべし。
コメント