Table of Contents
1. はじめに
この章では、AWS IoT Greengrassの概要、構成要素の説明、そして本ハンズオンの概要が説明されていました。
ざっくりと用語整理。
-
AWS IoT Greengrass V2:ワークフローのビルディングブロックで構成されています
-
コアデバイス:Greengrass コアソフトウェア
-
コンポーネント:Greengrass コアデバイスで実行されるソフトウェアモジュール
- レシピ:コンポーネントの詳細、構成、パラメータを定義するJSON または YAML ファイル
- アーティファクト:デバイス上で実行されるソースコード
-
デプロイ:コンポーネントを送信し、目的のターゲットデバイスに希望するコンポーネント構成を適用するプロセス
-
-
デバイスのライフサイクル
2. ハンズオン環境のセットアップ
本ハンズオンでは、Greengrassエッジランタイムの実行環境としてCloud9を使用するため、この章でCloud9のセットアップを行いました。
エッジデバイスといえば、Raspberry Piなどを準備して、まずは色々とデバイスの個体差が発生したりする面倒なセットアップのイメージがありますが、本ハンズオンは全てAWS内で完結しており、とてもやりやすかったです。
AWS CloudFormationで一発で環境構築できるので、ある意味ブラックボックスな部分はありますが、主たる目的はAWS IoT Greengrassを触ることなので今回は深く考えず進みました。
本ハンズオンを3回に分けて(1回1時間半ぐらい)実施しました。Cloud9では、EC2インスタンス(t3.large)を使用していました。
毎回終了時にインスタンスを停止することで、無駄なコストは払わず、途中から再開できたりもして、入門編としてはすごくいい開発体験でした。
3. Greengrass のセットアップ
この章では、デバイス側とAWS IoT Core側でそれぞれのセットアップを行いました。
(IoTデバイス開発で、時折混乱してくるのはこれはサーバー側なのか?デバイス側なのか?なので、区別して書いていきます。←これは私だけ?笑)
AWS IoT Core側(サーバー)
-
Greengrass のコアデバイスを新規作成します
- GUIでわかりやすい
デバイス側
-
IoT Core側でコアデバイスを新規作成すると、インストーラースクリプトが表示されるので、デバイス側でそのスクリプトを実行するのみです。簡単!(CloudFrontからzipファイルをインストールして、展開する感じ)
- AWS IoT Core側のモノ、ポリシー、デバイス証明書を自動で追加してくれます(スクリプトのコピペは必要なものの、必要な設定は自動なのでありがたい)
4. コンポーネントの作成
こまでの設定で、コアデバイスまでの設定が完了したので、この章では、実際にデバイス側で実行するソフトウェアの作成を行いました。
デバイス側
-
アプリケーションソフトウェアを実装します
-
レシピ(設定ファイル)を作成します
- Greengrassコンポーネントの構成を列挙します(ComponentName,Version,Description)
- ComponentConfigurationで、パラメータを設定します
- Manifestsで、どのプラットフォームで、ライフサイクルのどのタイミングで何を実行するか設定します
-
テスト用に開発中のコンポーネントのローカルデプロイメントを行います
- greengrass-cliで、[1]のアプリケーションと[2]のレシピ(設定ファイル)を用いてデプロイを行います
- デプロイ後に、実際にデバイスでアプリケーションソフトウェアの動作が開始され、動作確認ができます
-
動作確認が問題なければ、[1]のアプリケーションソフトウェアをS3にアップロードします
-
[2]のレシピ(設定ファイル)を使って、AWS IoT Core側(サーバー)にコンポーネントを登録します
AWS IoT Core側(サーバー)
- Greengrass デバイス->コンポーネントで登録したコンポーネントが確認できます
- デプロイしたいターゲットを選択して、AWS IoT Core側(サーバー)からデバイス側にコンポーネントをデプロイします
5. Pub / Sub IPC
この章では、プロセス間通信を行うための IPC (Inter-Process Communication) SDKを使ってみました。
SDKのお陰で、簡単にプロセス間で Publisher (Pub)と Subscriber (Sub) の通信を行うことができました。
IoTデバイス特有の非同期通信を前提として、このプロセス間通信は有効的に利用できそうだと感じました。
まとめ
今回のハンズオンを通じて、AWS IoT Greengrassの概要を把握することができました。
SDKやパブリックコンポーネントなど、リソースも充実しているので、(大量のIoTデバイスを開発案件があれば)今後使っていきたいと思えました。