スポンサーリンク

AWS IoT core とラズパイを接続する際のメモ②:ポリシーの変更

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": "*"
    }
  ]
}

それでも同じエラーを吐くようなら
使用している証明書に対してポリシーがアタッチされているか確認するべし。

コメント

タイトルとURLをコピーしました