AWS IoT Greengrass の働き
AWS IoT Greengrass クライアントソフトウェアはAWS IoT Greengrass Core ソフトウェアとも呼ばれ、ARM または x86 アーキテクチャを持つデバイス向けの、Windows および Linux ベースのディストリビューション (Ubuntu や Raspberry Pi OS など) で動作します。AWS IoT Greengrass を使用すると、デバイスが生成するデータに対してローカルに動作するようプログラミングを行い、機械学習モデルに基づく予測を実行し、デバイスデータのフィルタリングおよび集計を行うことができます。AWS IoT Greengrass は AWS Lambda 関数、Docker コンテナ、ネイティブ OS プロセス、または任意のカスタムランタイムのローカル実行を可能にします。
AWS IoT Greengrass には、エッジデバイスの機能を簡単に拡張できる、事前に構築されたソフトウェアモジュール (コンポーネントと呼ばれます) が用意されています。AWS IoT Greengrass コンポーネントを使用すると、エッジでAWS サービスおよびサードパーティ製アプリケーションに接続できます。IoT アプリケーションの開発後、AWS IoT Greengrass は現場のデバイスフリートにおいてこれらのアプリケーションをリモートでデプロイ、設定、および管理することを可能にします。
以下の例は、AWS IoT Greengrass デバイスが AWS IoT Greengrass のクラウドサービスおよび AWS クラウド のその他の AWS サービスとどのように連携するかを示しています。
AWS IoT Greengrass の主要なコンセプト
AWS IoT Greengrass を理解して使用する上で不可欠な概念を以下に示します:
- AWS IoT のモノ
-
AWS IoT のモノとは、特定のデバイスまたは論理エンティティを表します。モノに関する情報は、JSON データとして AWS IoT レジストリに保存されます。
- Greengrass コアデバイス
-
AWS IoT Greengrass Core ソフトウェアを実行するデバイス。Greengrass コアデバイスは AWS IoT モノです。複数のCore デバイスを AWS IoT モノグループに追加して、Greengrass コアデバイスのグループを作成および管理できます。詳細については、「AWS IoT Greengrass コアデバイスをセットアップする」を参照してください。
- Greengrass クライアントデバイス
-
MQTT を介して Greengrass コアデバイスに接続して通信するデバイス。Greengrass クライアントデバイスは AWS IoT モノです。コアデバイスは、接続されたクライアントデバイスからのデータの処理、フィルタリング、および集計を行うことができます。クライアントデバイス、AWS IoT Core クラウドサービス、Greengrass コンポーネントの間で MQTT メッセージをリレーするように、コアデバイスを設定できます。詳細については、「ローカル IoT デバイスとやり取りする」を参照してください。
クライアントデバイスは FreeRTOS を実行、または AWS IoT Device SDK またはGreengrass 検出 API を使用して、接続可能なコアデバイスに関する情報を取得できます。
- Greengrass コンポーネント
-
Greengrass コアデバイスにデプロイされ実行されるソフトウェアモジュールです。AWS IoT Greengrass で開発およびデプロイされるソフトウェアはすべてコンポーネントとしてモデル化されます。AWS IoT Greengrass は構築済みのパブリックコンポーネントを提供し、これによりアプリケーションで使用できる機能が提供されます。ローカルデバイスまたはクラウドで、独自のカスタムコンポーネントを開発することもできます。カスタムコンポーネント開発後は、AWS IoT Greengrass クラウドサービスを使用して、単一または複数のコアデバイスにコンポーネントをデプロイできます。カスタムコンポーネントを作成して、そのコンポーネントをコアデバイスにデプロイできます。これを行うとき、コアデバイスはコンポーネントを実行するために、以下のリソースをダウンロードします。
-
レシピ: コンポーネントの詳細、設定、およびパラメータを定義してソフトウェアモジュールを記述する JSON または YAML ファイル。
-
アーティファクト: デバイスで実行するソフトウェアを定義するソースコード、バイナリ、またはスクリプト。アーティファクトをゼロから作成することも、Lambda 関数、Docker コンテナ、またはカスタムランタイムを使用してコンポーネントを作成することもできます。
-
依存関係: コンポーネント間の関係で、依存コンポーネントの自動更新または再起動を強制できるもの。たとえば、暗号化コンポーネントに依存させることにより、セキュアなメッセージ処理コンポーネントを得ることができます。これにより、暗号化コンポーネントが更新されると、メッセージ処理コンポーネントも自動的に更新され再起動されるようになります。
詳細については、AWS が提供したコンポーネントおよびAWS IoT Greengrass コンポーネントを開発するを参照してください。
-
- デプロイメント
-
コンポーネントを送信し、目的のコンポーネント設定を宛先ターゲットデバイスに適用するプロセス。ターゲットデバイスには、単一の Greengrass コアデバイスまたは Greengrass コアデバイスのグループを指定できます。デプロイでは、更新されたコンポーネント設定がターゲットに自動的に適用されます。依存関係が定義されているその他のコンポーネントもこの処理に含まれます。既存のデプロイをクローンして、同じコンポーネントを使用しつつ別のターゲットにデプロイされる新しいデプロイを作成することもできます。デプロイは連続的なものです。つまり、デプロイによるコンポーネントまたはコンポーネント設定に対する更新は、自動的にすべてのターゲットに送信されます。詳細については、「デバイスに AWS IoT Greengrass コンポーネントのデプロイ」を参照してください。
- AWS IoT Greengrass Core ソフトウェア
-
コアデバイスにインストールするすべての AWS IoT Greengrass ソフトウェアのセットです。AWS IoT GreengrassCore ソフトウェアの設定は次のとおりです。
-
nucleus: このコンポーネントは必須であり、AWS IoT Greengrass Core ソフトウェアの最小限の機能を提供します。nucleus は他のコンポーネントのデプロイ、オーケストレーション、およびライフサイクル管理を管理します。また、個々のデバイスで AWS IoT Greengrass コンポーネント間のローカルなコミュニケーションを円滑化します。詳細については、「Greengrass nucleus」を参照してください。
-
オプションのコンポーネント: これらの設定可能なコンポーネントは AWS IoT Greengrass によって提供され、エッジデバイスの追加機能を有効にします。必要に応じて、データストリーミング、ローカル機械学習推論、ローカルコマンドラインインターフェイスなど、デバイスにデプロイするオプションコンポーネントを選択できます。詳細については、「AWS が提供したコンポーネント」を参照してください。
コンポーネントの新しいバージョンをデバイスにデプロイすることにより、AWS IoT Greengrass Core ソフトウェアをアップグレードできます。
-
AWS IoT Greengrass の機能
AWS IoT Greengrass Version 2 は以下の要素で設定されています。
-
ソフトウェアディストリビューション
-
AWS IoT Greengrass Core ソフトウェアのインストールに最低限必要となる、Greengrass nucleus コンポーネントです。このコンポーネントは、Greengrass コンポーネントのデプロイ、オーケストレーション、ライフサイクル管理を管理します。
-
サービス、プロトコル、およびソフトウェアと統合するために、追加オプションとして AWS が提供するコンポーネントです。
-
カスタム Greengrass コンポーネントの作成、テスト、構築、パブリッシュ、デプロイに使用する、Greengrass 開発ツールです。
-
クライアントデバイスで使用する、カスタム Greengrass コンポーネントと Greengrass Discovery ライブラリ用のプロセス間通信 (IPC) ライブラリを含む、AWS IoT Device SDK です。
-
コアデバイスでデータストリームの管理に使用する、ストリームマネージャー SDK です。
-
-
クラウドサービス
-
AWS IoT Greengrass V2 API
-
AWS IoT Greengrass V2 コンソール
-
AWS IoT Greengrass Core ソフトウェア
エッジデバイスで実行可能な AWS IoT Greengrass Core ソフトウェアを使用して、以下を実行できます。
-
AWS クラウドへの自動エクスポートにより、データストリームをローカルデバイスで処理します。詳細については、「Greengrass コアデバイスでのデータストリームの管理」を参照してください。
-
AWS IoT とコンポーネント間の MQTT メッセージングをサポートします。詳細については、「AWS IoT Core MQTT メッセージをパブリッシュ/サブスクライブする」を参照してください。
-
MQTT 経由で接続および通信を行うローカルデバイスとやり取りします。詳細については、「ローカル IoT デバイスとやり取りする」を参照してください。
-
コンポーネント間のローカルパブリッシュおよびサブスクライブメッセージをサポートします。詳細については、「ローカルメッセージをパブリッシュ/サブスクライブする」を参照してください。
-
コンポーネントと Lambda 関数をデプロイして呼び出します。詳細については、「デバイスに AWS IoT Greengrass コンポーネントのデプロイ」を参照してください。
-
インストールスクリプトや実行スクリプトのサポートなどにより、コンポーネントのライフサイクルを管理します。詳細については、「AWS IoT Greengrass コンポーネントレシピのリファレンス」を参照してください。
-
AWS IoT Greengrass Core ソフトウェアおよびカスタムコンポーネントの安全な無線通信 (OTA) によるソフトウェア更新を実行します。詳細については、AWS IoT Greengrass Core ソフトウェア (OTA) の更新およびデバイスに AWS IoT Greengrass コンポーネントのデプロイを参照してください。
-
ローカルシークレットの安全な暗号化されたストレージおよびコンポーネントによる制御されたアクセスを提供します。詳細については、「シークレットマネージャー」を参照してください。
-
デバイスの認証と認可による、デバイスと AWS クラウド間の安全な接続。詳細については、「AWS IoT Greengrass のデバイス認証と承認」を参照してください。
Greengrass コアデバイスの設定と管理は AWS IoT Greengrass API で行います。ここでは、継続的なソフトウェアのデプロイの作成を行います。詳細については、「デバイスに AWS IoT Greengrass コンポーネントのデプロイ」を参照してください。
一部の機能は、特定のプラットフォームのみでサポートされています。詳細については、「オペレーティングシステム別 Greengrass 機能の互換性」を参照してください。
サポートされるプラットフォーム、要件、およびダウンロードの詳細については、「AWS IoT Greengrass コアデバイスをセットアップする」を参照してください。
このソフトウェアをダウンロードすると、Greengrass Core ソフトウェアのライセンス契約