Table of Contents
6. ローカルMQTTブローカー
この章ではGreengrass Core Deviceの内部にMQTT Bridge Componentをデプロイしました。
これにより、ローカルのMQTTブローカーの特定のTopicへPublishしたメッセージがAWS IoT Coreにリレーされるようになります。Publishに限らずSubscribeも可能です。
例えば、例えば工場などインターネットに接続できるデバイスを限定したい場合に、有用だと思いました。AWS IoT Coreとの通信をGreengrass Core Deviceが統括する形となり、ローカルネットワーク上のデバイスはGreengrass Core DeviceにメッセージをPub/Subするだけで済むためです。
Workshopでは触れられてませんでしたが、AWS IoT GreengrassはMQTTメッセージの宛先がクラウドの場合、メッセージキューにキャッシュするとのこと。デバイスが一時的にオフラインとなっていても、復旧後に再送してくれるので安心ですね。
参考
- https://d1.awsstatic.com/webinars/jp/pdf/services/20201215-AWS%20ioT%20Greengrass.pdf
- https://docs.aws.amazon.com/ja_jp/greengrass/v1/developerguide/gg-core.html#mqtt-message-queue
7. 機械学習
Greengrassはエッジ機械学習の用途でも使えるということを学べる章でした。
このハンズオンでは、画像分類や物体検出を行う機械学習モデルを内包した公開コンポーネントをデプロイして動作させる、といったことを行いました。
実際のお仕事だと分類・検出したい対象がより限定的なので、自分で作成したモデルを動かす方法だったり、SageMaker Edge Managerを活用する方法も学ぶ必要がありそうだと思いました。
8. コンテナの利用
Greengrass V2ではコンテナ化されたコンポーネントを作成・デプロイすることもできます。各Greengrass Core Deviceにランタイムやライブラリをインストール手間を省ける(それらのコンテナに内包できる)ので便利ですね。
我々IoTチームはRubyをメイン言語として開発しているので、コンポーネントをRubyコンテナ上で作成することはデファクトになりうると思いました。近々、コンテナコンポーネント上でRubyを動かせそうか試してみたいと思います。
9. フリートプロビジョニング
大量のデバイスをプロビジョニングするときに必要となる、フリートプロビジョニングについて学びました。X.509証明書を発行するためのクレーム証明書をデバイスに配置しておくだけで、デバイスを初回接続したときに、そのデバイス専用のX.509証明書をプロビジョニングできる便利な仕組みがあることを知りました。
弊社ではSORACOMを使ったIoTシステムの開発を得意としているので、そもそもX.509証明書をデバイスに置く必要がなかったり、置くとしてもSORACOM Kryptonを使って対応することが多いです。
一方で、SORACOMを使わないIoT開発もゼロではないので、そういったケースで大量のデバイスをばら撒きたいシチュエーションではフリートプロビジョニングを使うことになりそうです。
まとめ
これまでなんとなく理解したつもりになっていたAWS IoT Greengrassについて、使用するメリット、やれること・やれないことを把握する良い機会となりました。
これらは実機がないと学べないものと思っていましたが、WorkshopはCloud9を使って学べる内容となっていたので、複数人でも進めやすかったです。
ぜひ、次はRaspberry Piで動作させてみたいと思います。