AWS IoT Greengrass V1 と AWS IoT Greengrass V2 の違い - AWS IoT Greengrass

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS IoT Greengrass V1 と AWS IoT Greengrass V2 の違い

AWS IoT Greengrass V2 ではデバイス、フリート、およびデプロイ可能なソフトウェアに関する新しい基本概念が導入されています。このセクションでは、V2 では異なる V1 の概念について説明します。

Greengrass の概念と用語
概念 AWS IoT Greengrass V1 AWS IoT Greengrass V2

アプリケーションコード

AWS IoT Greengrass V1 では、Lambda 関数はコアデバイスで実行されるソフトウェアを定義します。各 Greengrass グループで、関数が使用するサブスクリプションとローカルリソースを定義します。コンテナ化された Lambda ランタイム環境で AWS IoT Greengrass Core ソフトウェアが実行する Lambda 関数については、メモリ制限などのコンテナパラメータを定義します。

AWS IoT Greengrass V2 では、コンポーネントは、コアデバイス上で動作するソフトウェアモジュールです。

  • 各コンポーネントにはコンポーネントのライフサイクルの各段階で実行するメタデータや、パラメータ、依存関係、スクリプトを定義した recipe があります。

  • recipe は、コンポーネントのアーティファクトも定義します。これらは、スクリプト、コンパイルされたコード、静的リソースなどのバイナリファイルです。

  • コアデバイスにコンポーネントをデプロイすると、コアデバイスによってコンポーネント recipe とアーティファクトがダウンロードされ、コンポーネントが実行されます。

AWS IoT Greengrass V2 で Lambda ランタイム環境で実行されるコンポーネントとして V1 Lambda 関数をインポートできます。Lambda 関数をインポートするときは、関数のサブスクリプション、ローカルリソース、およびコンテナパラメータを指定します。詳細については、「ステップ 2: AWS IoT Greengrass V1 アプリケーションを移行する AWS IoT Greengrass V2 コンポーネントを作成してデプロイする」を参照してください。

カスタムコンポーネントを作成する方法の詳細については、「AWS IoT Greengrass コンポーネントを開発する」を参照してください。

AWS IoT Greengrass グループとデプロイ

AWS IoT Greengrass V1 では、グループはコアデバイスや、そのコアデバイスの設定とソフトウェア、およびそのコアデバイスに接続できる AWS IoT のモノのリストを定義します。グループの設定をコアデバイスに送信するデプロイを作成します。

AWS IoT Greengrass V2 では、デプロイを使用して、コアデバイスで実行されるソフトウェアコンポーネントと設定を定義します。

  • 各デプロイは、単一のコアデバイス (AWS IoT モノ) または複数のコアデバイスを含めることができる AWS IoT モノグループが対象になります。

  • モノグループへのデプロイは継続的であるため、コアデバイスをモノグループに追加すると、そのグループのソフトウェア設定を受信します。

詳細については、「AWS IoT Greengrass コンポーネントをデバイスにデプロイする」を参照してください。

AWS IoT Greengrass V2 では、Greengrass CLI を使用してローカルデプロイを作成して、コンポーネントを開発するデバイスでカスタムソフトウェアコンポーネントをテストすることもできます。詳細については、「AWS IoT Greengrass コンポーネントを作成する」を参照してください。

AWS IoT Greengrass Core ソフトウェア

AWS IoT Greengrass V1 では、AWS IoT Greengrass Core ソフトウェアは、ソフトウェアとそのすべての機能を含む単一のパッケージです。AWS IoT Greengrass Core ソフトウェアをインストールしたエッジデバイスは Greengrass コアと呼ばれます。

AWS IoT Greengrass V2 では、AWS IoT Greengrass Core ソフトウェアはモジュール式であるため、メモリフットプリントを制御するために何をインストールするかを選択できます。

  • AWS IoT Greengrass Core ソフトウェアには、最低限 Greengrass nucleus コンポーネントがインストールされている必要があります。nucleus をインストールするエッジデバイスは、Greengrass コアデバイスと呼ばれます。

  • nucleus は、コアデバイス上の他のコンポーネントのデプロイ、オーケストレーション、およびライフサイクル管理を行います。

  • ストリームマネージャー、シークレットマネージャー、ログマネージャーなどの機能は、それらの機能が必要な場合にのみデプロイするコンポーネントです。詳細については、「AWS が提供したコンポーネント」を参照してください。

Connector

AWS IoT Greengrass V1 でのコネクタとは、AWS IoT Greengrass V1 のコアデバイスでローカルインフラストラクチャや、デバイスプロトコル、AWS、その他のクラウドサービスとやり取りが可能なモジュールを指します。

AWS IoT Greengrass V2 では、V1 のコネクタによって提供される機能を実装する Greengrass コンポーネントは AWS によって提供されます。以下の AWS IoT Greengrass V2 コンポーネントで Greengrass V1 コネクタ機能が提供されます。

詳細については、「AWS が提供したコンポーネント」を参照してください。

接続デバイス (Greengrass デバイス)

AWS IoT Greengrass V1 での接続されたデバイスとは、Greengrass グループに追加することで、そのグループ内のコアデバイスに接続し、MQTT 経由で通信する AWS IoT モノを指します。接続デバイスを追加または削除するたびに、そのグループをデプロイする必要があります。サブスクリプションを使用して、接続されたデバイスや AWS IoT Core、コアデバイス上のアプリケーション間でメッセージを中継します。

AWS IoT Greengrass V2 では、接続されたデバイスは Greengrass クライアントデバイスと呼ばれます。

  • クライアントデバイスをコアデバイスに関連付けて、それらを接続し、MQTT 経由で通信します。

  • クライアントデバイスの接続を認可するには、クライアントデバイスのグループに適用できる認可ポリシーを定義します。そのため、クライアントデバイスを追加または削除するためのデプロイを作成する必要はありません。

  • クライアントデバイス、AWS IoT Core、Greengrass コンポーネント間でメッセージを中継するには、オプションの MQTT ブリッジコンポーネントを設定します。

AWS IoT Greengrass V1 と AWS IoT Greengrass V2 で接続できるコアデバイスに関する情報を取得するには、デバイスで FreeRTOS を実行するか、AWS IoT Device SDK または Greengrass Discovery API を使用します。Greengrass Discovery API は下位互換性があるため、V1 コアデバイスに接続するクライアントデバイスがある場合は、コードを変更せずに V2 コアデバイスに接続できます。

デバイスクラスの詳細については、「ローカル IoT デバイスとやり取りする」を参照してください。

ローカルリソース

AWS IoT Greengrass V1 では、コンテナで実行される Lambda 関数を、コアデバイスのファイルシステム上のボリュームとデバイスにアクセスするように設定できます。これらのファイルシステムリソースは、ローカルリソースと呼ばれます。

AWS IoT Greengrass V2 では、Lambda 関数Docker コンテナ、またはネイティブオペレーティングシステムプロセスまたはカスタムランタイム のコンポーネントを実行できます。

  • コンテナ化された Lambda 関数をコンポーネントとしてインポートする場合は、関数が使用するローカルリソースを指定する必要があります。

  • コンテナ化されていない Lambda 関数と Lambda 以外のコンポーネントは、コアデバイス上のローカルリソースを直接操作できるため、コンポーネントが使用するローカルリソースを指定する必要はありません。

ローカルシャドウサービス

AWS IoT Greengrass V1 では、ローカルシャドウサービスはデフォルトで有効になっており、名前のないクラシックシャドウのみがサポートされています。デバイス上のシャドウとやり取りするには、Lambda 関数の AWS IoT Greengrass Core SDK を使用します。

AWS IoT Greengrass V2 では、シャドウマネージャーコンポーネントをデプロイして、ローカルシャドウサービスを有効にします。

  • デバイス上のシャドウとやり取りするには、Lambda 関数の AWS IoT Device SDK V2 とカスタムコンポーネントを使用します。

  • ローカルシャドウサービスは、名前付きシャドウをサポートします。

  • ローカルシャドウサービスでは、シャドウを削除し、削除したシャドウを AWS IoT Core と同期することができます。

詳細については、「デバイスシャドウとやり取り」を参照してください。

サブスクリプション

AWS IoT Greengrass V1 では、Greengrass グループのサブスクリプションを定義して、Lambda関数、コネクタ、接続デバイス、AWS IoT Core MQTT ブローカー、ローカルシャドウサービス間の通信チャネルを指定します。サブスクリプションは、関数ペイロードとして消費するイベントメッセージを Lambda 関数が受け取る場所を指定します。

AWS IoT Greengrass V2 では、サブスクリプションを使用せずに通信チャネルを指定します。

  • コンポーネントは独自の通信チャネルを管理し、ローカルのパブリッシュ/サブスクライブメッセージや、AWS IoT Core MQTT メッセージ、ローカルシャドウサービスとやり取りします。

  • クライアントデバイス、ローカルのパブリッシュ/サブスクライブブローカー、および AWS IoT Core MQTT ブローカ間のコミュニケーションチャネルを設定するには、MQTT ブリッジコンポーネント を設定してデプロイします。MQTT ブリッジコンポーネントを使用すると、コンポーネント内のクライアントデバイスとやり取りし、クライアントデバイスと AWS IoT Core の間でメッセージを中継できます。

他の AWS のサービス へのアクセス

AWS IoT Greengrass V1 では、グループロールと呼ばれる AWS Identity and Access Management (IAM) ロールを、Greengrass グループにアタッチします。グループロールは、そのグループのコアデバイス上の Lambda 関数と AWS IoT Greengrass 機能が AWS のサービス にアクセスするために使用する権限を定義します。

AWS IoT Greengrass V2 では、AWS IoT のロールエイリアスを Greengrass コアデバイスにアタッチします。ロールエイリアスは、トークン交換ロールと呼ばれる IAM ロールを参照します。トークン交換ロールは、コアデバイス上の Greengrass コンポーネントが AWS のサービス にアクセスするために使用する許可を定義します。詳細については、「コアデバイスが AWS サービスとやり取りできるように承認する」を参照してください。