AWS IoT Greengrass コアでのデータストリームの管理 - AWS IoT Greengrass

AWS IoT Greengrass Version 1 は機能更新を受信しなくなり、2023 年 6 月 30 日までセキュリティパッチとバグ修正のみ受信します。詳細については、「AWS IoT Greengrass V1 メンテナンスポリシー」を参照してください。重要な新機能新たなプラットフォームのサポートが追加された AWS IoT Greengrass Version 2 への移行を強くお勧めします。

AWS IoT Greengrass コアでのデータストリームの管理

AWS IoT Greengrass ストリームマネージャーを使用すると、大量の IoT データを AWS クラウド に転送することが容易になり、信頼性が向上します。ストリームマネージャーは、データストリームをローカルで処理し、AWS クラウド に自動的にエクスポートします。この機能は、機械学習 (ML) 推論などの一般的なエッジシナリオと統合され、AWS クラウド またはローカルストレージの送信先にエクスポートされる前にローカルで処理および分析されます。

ストリームマネージャーは、アプリケーション開発を簡素化します。IoT アプリケーションは、カスタムストリーム管理機能を構築する代わりに、標準化されたメカニズムを使用して大量のストリームを処理し、ローカルデータ保持ポリシーを管理できます。IoT アプリケーションは、ストリームの読み書きが可能です。ストレージタイプ、サイズ、データ保持に関するポリシーをストリームごとに定義して、ストリームマネージャーがストリームを処理およびエクスポートする方法を制御できます。

ストリームマネージャーは、断続的または制限された接続環境で動作するように設計されています。帯域幅の使用、タイムアウト動作、コアが接続または切断されたときのストリームデータの処理方法を定義できます。重要なデータの場合は、優先順位を設定して、ストリームを AWS クラウド にエクスポートする順序を制御できます。

AWS クラウド への自動エクスポートを設定して、保存、またはさらなる処理や分析を行えます。ストリームマネージャーは、以下の AWS クラウド 送信先へのエクスポートをサポートしています。

  • AWS IoT Analytics のチャネル。AWS IoT Analytics による高度なデータ分析が、ビジネス上の意思決定と、機械学習モデルの改善に役立ちます。詳細については、「AWS IoT Analytics ユーザーガイド」の「AWS IoT Analytics とは?」を参照してください。

  • Kinesis Data Streams のストリーム Kinesis Data Streams は、一般的に、大量のデータを集約して、データウェアハウスまたは MapReduce クラスターに読み込むために使用されます。詳細については、「Amazon Kinesis デベロッパーガイド」の「Amazon Kinesis Data Streams とは」を参照してください。

  • AWS IoT SiteWise のアセットプロパティ。AWS IoT SiteWise を使用すると、産業機器からのデータを大規模に収集、整理、分析できます。詳細については、「AWS IoT SiteWise ユーザーガイド」の「AWS IoT SiteWise とは?」を参照してください。

  • Amazon S3 のオブジェクト。Amazon S3 を使用すると、膨大なデータの保存と取得を行えます。詳細については、「Amazon Simple Storage Service デベロッパーガイド」の「Amazon S3 とは」を参照してください。

ストリーム管理ワークフロー

IoT アプリケーションは、AWS IoT Greengrass Core SDK を通じてストリームマネージャーと対話します。単純なワークフローの場合、Greengrass コア上で実行されるユーザー定義 Lambda 関数は、時系列温度や圧力メトリクスなどの IoT データを消費します。この Lambda 関数は、データをフィルタリングまたは圧縮した後に AWS IoT Greengrass Core SDK を呼び出して、ストリームマネージャーのストリームにデータを書き込む場合があります。ストリームマネージャーは、ストリームに定義されたポリシーに基づいて、ストリームを自動的に AWS クラウド にエクスポートします。ユーザー定義 Lambda 関数は、ローカルデータベースまたはストレージリポジトリにデータを直接送信することもできます。

IoT アプリケーションには、ストリームの読み書きを行うユーザー定義 Lambda 関数を複数含めることができます。これらのローカル Lambda 関数は、ストリームに対して読み書きを行い、データをローカルでフィルタリング、集約、分析できます。これにより、コアからクラウドまたはローカルの送信先にデータを転送する前に、ローカルイベントに迅速に対応し、貴重な情報を抽出することができます。

次の図に、ワークフローの例を示します。


                ストリームマネージャーワークフローの図。

ストリームマネージャーを使用するには、まずストリームマネージャーパラメータを設定して、Greengrass Core 上のすべてのストリームに適用するグループレベルのランタイム設定を定義します。これらのカスタマイズ可能な設定を使用すると、ビジネスニーズと環境の制約に基づいて、ストリームマネージャーがストリームを保存、処理、エクスポートする方法を制御できます。詳細については、「AWS IoT Greengrass ストリームマネージャーの設定」を参照してください。

ストリームマネージャーを設定したら、IoT アプリケーションを作成してデプロイできます。これらは通常、AWS IoT Greengrass Core SDK の StreamManagerClient を使用してストリームを作成および操作するユーザー定義の Lambda 関数です。この Lambda 関数は、ストリームの作成時に、エクスポート先、優先度、永続性といった、ストリームごとのポリシーを定義します。StreamManagerClient 操作用コードスニペットなどの詳細については、「ストリームを操作するために StreamManagerClient を使用する」を参照してください。

単純なワークフローを設定するチュートリアルについては、「AWS クラウド へのデータストリームエクスポート (コンソール)」または「AWS クラウド へのデータストリームエクスポート (CLI)」を参照してください。

要件

ストリームマネージャーの使用には、次の要件が適用されます。

  • AWS IoT Greengrass コアソフトウェア v1.10 以降を使用し、ストリームマネージャーを有効にする必要があります。詳細については、「AWS IoT Greengrass ストリームマネージャーの設定」を参照してください。

    ストリームマネージャーは OpenWrt ディストリビューションではサポートされていません。

  • Java 8 ランタイム (JDK 8) をコアにインストールする必要があります。

    • Debian ベースのディストリビューション (Raspbian を含む) または Ubuntu ベースのディストリビューションの場合は、次のコマンドを実行します。

      sudo apt install openjdk-8-jdk
    • Red Hat ベースのディストリビューション (Amazon Linux を含む) の場合は、次のコマンドを実行します。

      sudo yum install java-1.8.0-openjdk

      詳細については、OpenJDK ドキュメントの「How to download and install prebuilt OpenJDK packages」を参照してください。

     

  • ストリームマネージャーには、基本 AWS IoT Greengrass Core ソフトウェアに加えて、最低 70 MB の RAM が必要です。合計メモリ要件は、ワークロードによって異なります。

     

  • ユーザー定義の Lambda 関数は、AWS IoT Greengrass Core SDK を使用してストリームマネージャーと対話する必要があります。AWS IoT Greengrass Core SDK は複数の言語で使用できますが、ストリームマネージャー操作をサポートするのは、次のバージョンのみです。

    • Java SDK (v1.4.0 以降)

    • Python SDK (v1.5.0 以降)

    • Node.js SDK (v1.6.0 以降)

    Lambda 関数ランタイムに対応する SDK のバージョンをダウンロードし、Lambda 関数デプロイパッケージに含めます。

    注記

    AWS IoT Greengrass Core SDK for Python には Python 3.7 以降が必要で、他のパッケージの依存関係があります。詳細については、「Lambda 関数のデプロイパッケージを作成する (コンソール)」または「Lambda 関数のデプロイパッケージを作成する (CLI)」を参照してください。

  • ストリームに対して AWS クラウド のエクスポート先を定義する場合は、エクスポートターゲットを作成し、Greengrass グループロールでアクセス許可を付与する必要があります。送信先によっては、他の要件も適用される場合があります。詳細については、以下を参照してください。

    こうした AWS クラウド リソースはユーザー側で維持する必要があります。

データセキュリティ

ストリームマネージャーを使用する場合は、次のセキュリティ上の考慮事項に注意してください。

ローカルデータセキュリティ

AWS IoT Greengrass は、コアデバイス上のコンポーネント間でローカルに保管時または転送中のストリームデータを暗号化しません。

  • 保管時のデータ。ストリームデータは、Greengrass コアのストレージディレクトリにローカルに保存されます。データのセキュリティのために、AWS IoT Greengrass は Unix ファイル権限とフルディスク暗号化が有効になっている場合に依存します。オプションの STREAM_MANAGER_STORE_ROOT_DIR パラメータを使用して、ストレージディレクトリを指定できます。後でこのパラメータを変更して別のストレージディレクトリを使用した場合、AWS IoT Greengrass は以前のストレージディレクトリまたはその内容を削除しません。

     

  • ローカルで転送中のデータ。AWS IoT Greengrass は、コアにおいて、データソース、Lambda 関数、AWS IoT Greengrass Core SDK、ストリームマネージャー間でローカル転送されるストリームデータを暗号化しません。

     

  • AWS クラウド に転送中のデータ。ストリームマネージャーによって AWS クラウド にエクスポートされたデータストリームは、Transport Layer Security (TLS) を使用した標準 AWS サービスクライアント暗号化を使用します。

詳細については、「データ暗号化」を参照してください。

クライアント承認

ストリームマネージャークライアントは、AWS IoT Greengrass Core SDK を使用してストリームマネージャーと通信します。クライアント認証が有効になっている場合、Greengrass グループの Lambda 関数だけがストリームマネージャーのストリームと対話できます。クライアント認証が無効になっている場合、Greengrass コアで実行されているプロセス (Docker コンテナなど) は、ストリームマネージャーのストリームと対話できます。ビジネスケースで要求される場合にのみ、認証を無効にする必要があります。

クライアント認証モードを設定するには、STREAM_MANAGER_AUTHENTICATE_CLIENT パラメータを使用します。このパラメータは、コンソールまたは AWS IoT Greengrass API から設定できます。変更は、グループがデプロイされた後に有効になります。

  有効 無効

パラメータ値

true (デフォルトおよび推奨)

false

許可されるクライアント

Greengrass グループのユーザー定義 Lambda 関数

Greengrass グループのユーザー定義 Lambda 関数

Greengrass コアデバイスで実行されているその他のプロセス

以下も参照してください。