AWS IoTを使ってみたもの、個人的な勘違いと詰めの甘さで若干ハマったのでメモしておきます。
参考記事
基本、豊富に参考記事があり迷うことはありませんでした。
- AWS再入門 AWS IoT編 | Developers.IO
- ラズパイとAWS IoTを接続してS3にデータを送る – Qiita
- AWS IoT Thing ShadowでLEDをつけてみた | IoTニュース:IoT NEWS
- aws/aws-iot-device-sdk-js: SDK for connecting to AWS IoT from a device using JavaScript/Node.js
ありがとうございます。
おもな流れ
自分のハマりどころを中心に主な流れを書いておきます。
Create a things でデバイス自体の登録をします。
デバイス自体の登録を行って、デバイスをクリックすると、
右側に詳細が出てくるので、Connect a Deviceを押してNodeJS用の設定&鍵を作ります。
設定まで出してくれて親切。
ハマりポイント1:この時点でNodeJSを設定してしまったらつながらなかった→ルールとロール未設定
喜びのあまり、この時点でNodeJSを設定してしまったらつながらなかった。
aws/aws-iot-device-sdk-js: SDK for connecting to AWS IoT from a device using JavaScript/Node.js
と、さきほど発行された設定を読んでもconnectのまま反応しない。
原因は参考記事のとおり、そのままルールを作成してAWS IoT用のロールを作成すればよかったところを端折ったので、うまくつながらなかった ということでした。
ちゃんと手順を把握して、ルールとロールは作りましょうという話。
ハマりポイント2:本来必要な鍵ファイルを非アクティブにしていたので実行時にエラー
いろいろと実験をしていたら鍵ファイルが増えすぎてしまって整理していました。
そうしたら、実行時にエラー。
events.js:141 throw er; // Unhandled 'error' event ^ Error: write EPROTO 000000000:error:000000000:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown:openssl\ssl\s3_pkt.c:1472:SSL alert number 46 000000000:error:000000000:SSL routines:ssl3_write_bytes:ssl handshake failure:openssl\ssl\s3_pkt.c:656: at exports._errnoException (util.js:870:11) at WriteWrap.afterWrite (net.js:769:14)
原因は本来必要な鍵ファイルを非アクティブにしていたためにエラーになっていたということでした。caCertの設定もやや迷いましたが、ここも参考記事「Symantecからルート証明書を取得」すると丁寧に書いていて、ハマる前に回避。
ということで、おもに、普通のMQTTブローカーが出来上がって気軽に投げればいいやと思っていたところで、鍵ファイルなどのちゃんとした手続きやAWS的な設定をする必要があったところを疎かに対応してハマりました。
しかしハマったもののAWS IoT自体は、あっさりつながりました。よくできてます。セキュアに色々とやりとりできて、Shadowの仕組みに感動したり、実際に大量のデバイスでどう管理していこうかなどワクワク考えています。
それでは、よきAWS IoT&デバイス連携 Lifeを!