はじめに
Edukitを手に入れたのは2021年の11月ごろで、その時に一度Lチカを試してみた。その際にはregistration_helper.pyの実行がうまくいかず、GitHubに質問を投げながら、なんとかかんとか実行できた。
https://github.com/aws-samples/aws-iot-edukit-tutorials/discussions/80
2022年になって、改めて勉強してみようと思ったら、チュートリアルの内容が変わっていて、例に漏れず実行がすんなりできなかったので、引っかかった場所の記録を残しておく。
この記事は、AWS Workshopのチュートリアルに沿ってLチカを実施した時の記録です。チュートリアルは以下のリンクの通りです。
引っかかったところ
AWS IoT CoreにThingを登録するところで、チュートリアル通りに実行すると登録されたEdukitにCertificateが紐付けされない。
Blinky-Hello-World % pio run -e core2foraws-device_reg -t register_thing
チュートリアルにある蒸気のコマンドを実行した後で、AWS Consoleを確認すると、Thingは登録されているけれども、Certificateが紐付けされていない。この後のコマンドを実行してMQTTのテストをしても、メッセージが受け取れない。ログを確認すると、以下のメッセージがなんだか怪しい。ResourceAlreadyExistsExceptionと出ているので、過去にLチカ実施した時の何かが悪さをしているように見える。Console上で、過去に登録したThingは全て削除した後も同じメッセージが出てしまう。
Try importing certificate...
Exception occurred: An error occurred (ResourceAlreadyExistsException) when calling the RegisterCertificateWithoutCA operation: The certificate is already provisioned or registered
Exception occurred: Parameter validation failed:
Invalid type for parameter principal, value: False, type: <class 'bool'>, valid types: <class 'str'>
MANIFEST_IMPORT INFO attach_thing_principal failed.
MANIFEST_IMPORT FAIL False
MANIFEST_IMPORT SUCCESS False False
ResourceAlreadyExistsExceptionと出ているので、過去にLチカ実施した時の何かが悪さをしているように見える。Console上で、過去に登録したThingは全て削除した後も同じメッセージが出てしまう。ちなみに日本語版のチュートリアルには、以下のWarningが書かれている。
過去にこのセットアップをされている場合、すでにAWS IoT Coreに情報が登録されている可能性があります。その場合は、ターミナルに表示される Unique ID: 0123456789ABCD の様なIDの名前のモノや証明書、それに紐づくIoT PolicyをAWS IoT Coreのマネージメントコンソールから削除してから、再度実行してください。
Gitをクローンしなおしたり、PlatformIOを入れ直したり、色々試したけれど、結局Regionをus-west-2からus-east-1に変えて実行すると無事に繋がった。
␛[0;32mI (9191278) MAIN: <<Thing ID>>/ Hello from AWS IoT EduKit (QOS0) : 0 ␛[0m
␛[0;32mI (9191308) MAIN: Subscribe callback␛[0m
␛[0;32mI (9191308) MAIN: <<Thing ID>>/ Hello from AWS IoT EduKit (QOS1) : 1 ␛[0m
␛[0;32mI (9194448) MAIN: Subscribe callback␛[0m
␛[0;32mI (9194448) MAIN: <<Thing ID>>/ Hello from AWS IoT EduKit (QOS0) : 0 ␛[0m
␛[0;32mI (9194498) MAIN: Subscribe callback␛[0m
␛[0;32mI (9194498) MAIN: <<Thing ID>>/ Hello from AWS IoT EduKit (QOS1) : 1 ␛[0m
␛[0;32mI (9197638) MAIN: Subscribe callback␛[0m