出典1:AWS IoT CoreをRaspberry Piで使ってみた その1
出典2:AWS IoT CoreをRaspberry Piで使ってみた その2
出典3:AWS IoT CoreをRaspberry Piで使ってみた その3
AWS IoT Coreで物の作成
出典1の手順でAWS IoT CoreにIAM接続し、「test-device」という名の「物(Thing)」をつくる。
1.AWS IoT CoreにIAM接続する。
AWSのアカウント作成、IAMユーザーの作成は終わっていてIAMユーザーとしてサインインできる状態からはじめる。
2.サインインしてサービスから「AWS IoT Core」を選ぶ。
3.新しく「test-device」という名の物を1つ作る。
4.全ての証明書をダウンロード
証明書は5つ、
用途 | ファイル名 | |
---|---|---|
(1) | デバイス証明書 | ****-private.pem.crt |
(2) | パブリックキー | ****-public.pem.key |
(3) | プライベートキー | ****-private.pem.key |
(4) | ルートCA証明書1 | AmazonRootCA1.pem |
(5) | ルートCA証明書3 | AmazonRootCA3.pem |
このうちAWSへの接続に必要なのは
EndpointのあるAWS Iot を証明するAmazonRootCA1.pem
物である「test-device」が AWS IotにあるEndpointへ接続する際に確かに自分であることを証明するための「デバイス証明書」
更に、その際に使われる公開鍵と秘密鍵の計4つになるようだ。
ここらあたりはボケ老人にはとても理解できないことばかり、まあ何となくこんな感じかなで済ませることに。
5.ポリシーの作成
「安全性」>「ポリシー」から「test-policy」という名のポリシーを作成
6.グループ「test-group」の作成
グループに物「test-device」を追加、ポリシー「test-policy」を追加。
Raspberry PiとAWS IoT Coreの「Pub/Sub」動作確認
出典2の手順でラズパイをAWS IoT Coreへ接続し、「Publish/Subscribe」の動作確認を行う。
1.「ws-iot-device-sdk-python」をgit cloneする。
pi@raspberrypi:~ git clone https://github.com/aws/aws-iot-device-sdk-python.git
2.AWS IoT Coreからダウンロードした 証明書ファイルを入れる。
~/aws-iot-device-sdk-python/samples 配下に、Amazonルート証明書、デバイス証明書、秘密キーの3ファイルをコピー
pi@raspberrypi:~/aws-iot-device-sdk-python/samples/certs $ ls
AmazonRootCA1.pem
****-certificate.pem.crt
****-private.pem.key
3.サンプルプログラムのbasicPubSub.pyを実行する。
pi@raspberrypi:~/aws-iot-device-sdk-python/samples/basicPubSub $ python3 basicPubSub.py --endpoint ****-ats.iot.ap-northeast-1.amazonaws.com --rootCA ../certs/AmazonRootCA1.pem --cert ../certs/****-certificate.pem.crt --key ../certs/****-private.pem.key
尚、endopoint名は「AWS IoT」>「設定」で確認すること。 東京であれば****-ats.iot.ap-northeast-1.amazonaws.comになるはず。
4.トピック sdk/test/Python にPublishされていることを確認する。
2022-03-27 14:51:23,436 - AWSIoTPythonSDK.core.protocol.internal.clients - DEBUG - Invoking custom event callback...
2022-03-27 14:51:24,405 - AWSIoTPythonSDK.core.protocol.mqtt_core - INFO - Performing sync publish...
2022-03-27 14:51:24,406 - AWSIoTPythonSDK.core.protocol.internal.clients - DEBUG - Filling in custom puback (QoS>0) event callback...
2022-03-27 14:51:24,479 - AWSIoTPythonSDK.core.protocol.internal.workers - DEBUG - Produced [puback] event
2022-03-27 14:51:24,479 - AWSIoTPythonSDK.core.protocol.internal.workers - DEBUG - Dispatching [puback] event
2022-03-27 14:51:24,480 - AWSIoTPythonSDK.core.protocol.internal.clients - DEBUG - Invoking custom event callback...
2022-03-27 14:51:24,480 - AWSIoTPythonSDK.core.protocol.internal.clients - DEBUG - This custom event callback is for pub/sub/unsub, removing it after invocation...
2022-03-27 14:51:24,486 - AWSIoTPythonSDK.core.protocol.internal.workers - DEBUG - Produced [message] event
2022-03-27 14:51:24,486 - AWSIoTPythonSDK.core.protocol.internal.workers - DEBUG - Dispatching [message] event
Received a new message:
b'{"message": "Hello World!", "sequence": 1}'
from topic:
sdk/test/Python
--------------