Amazon Web Services ブログ

AWS IoT Greengrass と Docker を使用した IoT ソリューションのラピッドプロトタイピングのパターン

この記事は Patterns for rapid IoT solution prototyping using AWS IoT Greengrass and Docker の日本語訳です。

はじめに

調査によると、モノのインターネット(IoT)ソリューションの実装には、通常、市場に出て運用準備が整うまでに平均18〜24か月かかります。IoT ソリューション開発に関連する一般的なシナリオには、デバイスプロビジョニング、テレメトリ収集、リモートコマンドアンドコントロールなどがあります。ユースケースにもよりますが、well-architected IoT solution のプロトタイプを作成するには、それぞれのシナリオに適した設計原則とベストプラクティスを検討する必要があります。この投稿では、AWS Cloud Development Kit (AWS CDK)、AWS IoT GreengrassDocker を組み合わせたプロトタイピングデザインパターンを採用して、AWS での IoT ソリューションのプロトタイピングを加速する方法を説明します。

AWS CDK は、一般的なプログラミング言語の表現力を利用して、AWS 上のクラウドリソースをモデル化することで、クラウド開発を加速します。AWS IoT Greengrass は、デバイスソフトウェアを構築、デプロイ、管理するためのオープンソースのエッジランタイムおよびマネージドクラウドサービスです。AWS IoT Greengrass を使用することで、ワークロードのエッジでの実行、IoT デバイスフリート全体に新規アプリケーションやレガシーアプリケーションをデプロイ、デバイスフリートをリモートで管理および操作を行うことができます。AWS IoT Greengrass には、カスタムコードを記述することなくエッジデバイスの機能を拡張できる 30 種類以上の AWS提供コンポーネントもあります。

AWS IoT Greengrass は、Docker コンテナ内での実行や、Docker コンテナとしての実行など、さまざまなデプロイ方法をサポートしています。AWS CDK を使用して作成された体系化されたインフラストラクチャパターンを、コンテナ化および自動化と組み合わせて、IoT デバイスの機能をテストまたは調査するための一貫したアプローチを作成できます。このアプローチは、プロトタイピングの繰り返し中に重要ではない暫定的なアーティファクトを残すことなく、IoT ソリューションの迅速なプロトタイピングをサポートします。

ソリューションの概要

本投稿では、このアプローチが一般的な IoT ソリューションシナリオをサポートする方法を説明します。一般的な IoT ソリューションシナリオは、デバイスプロビジョニング、デバイスコマンドアンドコントロール、テレメトリ収集です。

デバイスプロビジョニング

安全な IoT デバイスのプロビジョニングでは、固有の アイデンティティを使用してデバイスを設定し、これらの ID を AWS IoT サービスに登録し、必要な権限を関連付ける必要があります。これにより、デバイスが AWS IoT やその他の必要な AWS サービスに安全に接続して通信できるようになります。この要件は AWS IoT Greengrass コアデバイスのセットアップに適用されます。以下の手順は、AWS IoT Greengrass コアデバイスをプロビジョニングする方法を示しています。

  1. AWS IoT Coreポリシーを作成します。
  2. AWS IoT のモノ、グループ、証明書、プライベートキーを作成します。
  3. AWS IoT ロールエイリアスと AWS Identity and Access Management (IAM) ロールを作成します。
  4. AWS IoT Greengrass コアデバイスをセットアップします。
  5. プロトタイピングとテスト用に AWS IoT Greengrass コンポーネントをデプロイします。

上記の手順を効率化するために、図 1 に示すパターンの採用を検討してください。このパターンでは、AWS CDK と Docker を使用して関連するリソースの作成を簡素化および効率化できます。そのため、ユーザーは 自身の IoT  ソリューションにおける機能の差別化実現に集中できます。本パターンには以下の要素が含まれます。

  1. 必要な AWS リソースを再利用可能な構成として表す AWS CDK スタック。AWS リソースは、AWS CloudFormation を使用して AWS CDK CLI を通じてデプロイされます。
  2. 新しく作成された AWS IoT クライアント証明書をダウンロードし、Docker Compose ファイルと AWS IoT Greengrass セットアップスクリプトを設定することができるヘルパースクリプト があります。
  3. AWS IoT Greengrass Core デバイスをセットアップし、AWS が提供するコンポーネントとオプションのカスタムコンポーネントをデプロイする Docker コンテナです。

A diagram showing base prototyping pattern for automated AWS IoT Greengrass Core device provisioning using AWS CDK, AWS IoT Greengrass and Docker.

図 1.AWS CDK と Docker を使用して自動化された AWS IoT Greengrass Core デバイスプロビジョニングの基本プロトタイピングパターン

図 1.の詳細については、このセクションを開いて確認してください。

この図は、AWS IoT Greengrass コアデバイスのリソースの作成とデプロイを自動化する手順を示しています。AWS CDK (1) と CloudFormation (2) を使用して、必要な AWS IoT リソースと IAM リソースを作成します。付属のヘルパースクリプト (3) を使用してローカル設定を完了し、ローカルの Docker コンテナ (4) で AWS IoT Greengrass を起動します。

AWS IoT サービス、インフラストラクチャデプロイ、Docker を組み合わせて機能的な AWS IoT Greengrass コアデプロイを作成できます。その後、ソリューションに必要な特化したコンポーネント開発を進めます。

リモート管理/コマンドとコントロール

IoT ソリューションを構築する際に遭遇する可能性のあるもう 1 つの一般的なシナリオは、IoT デバイスとリモートでやり取りできることです。たとえば、産業機器から特定のテレメトリデータを要求したり、ホームオートメーションイベントのスケジュールを設定したりします。AWS のベストプラクティスに従い、MQTT プロトコルの双方向機能を使用してください。AWS では MQTT のコマンドとコントロールを実装するための Device Shadow と AWS IoT Jobsを提供しています。

図 1 で説明したパターンをベースにすると、このアプローチを拡張して MQTT 経由でデバイスのコマンドとコントロール機能をすばやく有効にすることができます。このパターンの例を図2に示します。このパターンには以下が含まれます。

  1. AWS CDK スタックの内容:
    1. 追加の AWS IoT Core ポリシーと IAM ポリシーを作成します。
    2. 新しい AWS IoT モノグループを作成します。
    3. 既存の AWS IoT モノを新しいグループに追加します。
    4. デバイスのコマンドとコントロールのカスタム AWS IoT Greengrass コンポーネントをデプロイします。
  2. AWS CDK CLIを利用してCloudFormathionを実行し、リソースをデプロイします。

このパターンでは、AWS CDK ランタイムコンテキストを使用して、以前に作成されたベースとなる CloudFormation スタックからサポートしている AWS CDK リソースを参照します。本パターンは、リソースの再実装や再デプロイすることなく、新しい機能を作成してテストすることに重点を置いています。
スタックが正常にデプロイされると、カスタムコンポーネントは指定された MQTT トピックをサブスクライブし、コマンドリクエスト到達を待機します。このトピックを通じてデバイスにコマンドを発行し、MQTT トピックのレスポンス内で完了ステータスメッセージを受信します。

このアプローチを採用すると、利用用途に合致した AWS IoT ソリューションの一部として、カスタムデバイスのコマンドとコントロール機能のプロトタイプを迅速に作成できます。

A diagram showing an example prototyping pattern for IoT device command and control using MQTT. Once the stack is successfully deployed, the custom component subscribes to the specified MQTT topic and listens to incoming command requests. You can issue commands to the device through this topic and receive completion status messages in the response MQTT topic.

図 2.MQTT を使用した IoT デバイスのコマンドとコントロールのプロトタイピングパターンの例

図 2 の詳細については、このセクションを開いて確認してください。

AWS CDK (1) を使用して、すでにデプロイされた CloudFormation スタック (2) を参照し、追加の AWS IoT、IAM、および AWS IoT Greengrass デプロイリソースを作成します。MQTT ベースのコマンドとコントロールのコンポーネントは、ローカルで実行されている AWS IoT Greengrass コアデバイスにデプロイされます。

テレメトリの収集

最後に、一般的な IoT ソリューションには、物理デバイス、センサー、または産業機器からテレメトリデータを収集する機能が必要です。収集されたデータは、ストリーミング分析、デジタルツイン、予知保全、プロセスのシミュレーションと最適化など、多くの IoT アプリケーションをサポートできます。詳細については、「 IoT データの取り込みと可視化のための7つのパターン – ユースケースに最適なものを決定する方法」を参照してください。

基本的なデバイスプロビジョニングパターン (図 1) を基盤として、ユースケースの要件を満たすために IoT データを AWS に取り込むオプションを検討できます。たとえば、AWS IoT Greengrass コア デバイス上で実行されている AWS IoT SiteWise を使用すると、産業機器からのデータを大規模に収集、整理、分析できます。具体的には、OPC-UAプロトコルを使用して産業用テレメトリデータを取り込むソリューションを作成してください。取り込んだデータを視覚化して分析し、異常に対応したり、産業施設間の違いを特定したりできます。

このソリューションを実装するには、図 3 に示すパターンを採用してください。以前のパターンと同様に、このパターンには以下が含まれます。

  1. AWS CDK スタックの内容:
    1. 専用の AWS IoT Core ポリシーと IAM ポリシーを作成します。
    2. 新しい AWS IoT モノグループを作成します。
    3. 既存の AWS IoT モノを新しいグループに追加します。
    4. D必要な AWS IoT Greengrass コンポーネント (AWS IoT SiteWise OPC-UA コレクターAWS IoT SiteWise パブリッシャー、および AWS IoT Greengrass ストリームマネージャー) をデプロイします。
  2. クラウドフォーメーションを使用して AWS CDK CLI を使用してリソースをデプロイします。

また、このパターンでは、AWS CDK ランタイムコンテキストを使用して、作成済みのベースとなる AWS CloudFormation スタックがサポートする AWS CDK リソースを参照します。

デプロイすると、IoT Greengrass コア デバイスは既存の OPC-UA エンドポイントからテレメトリを収集し、このテレメトリを AWS IoT SiteWise に発行できるようになります。詳細については、「AWS IoT SiteWise へのデータの取り込み」を参照してください。

A diagram showing an example prototyping pattern ingesting telemetry using OPC-UA and AWS IoT SiteWise. Once deployed, your AWS IoT Greengrass Core device will be able to collect telemetry from an existing OPC-UA endpoint and publish this telemetry to AWS IoT SiteWise.

図 3.OPC-UA と AWS IoT SiteWise を使用してテレメトリを取り込むプロトタイピングパターンの例

図 3 の詳細については、このセクションを開いて確認してください。

AWS CDK (1) を使用して、以前にデプロイされたベースの CloudFormation スタック (2) を参照し、追加の AWS IoT、IAM、および AWS IoT Greengrass デプロイリソースを作成します。テレメトリの収集と公開に必要な AWS IoT SiteWise コンポーネントは、ローカルで実行されている AWS IoT Greengrass コアデバイスにデプロイされます。

このアプローチを使用すると、必要なテレメトリの取り込み機能を迅速に構築してテストできます。自動化とコンテナ化という利点も加わり、プロトタイピングにかかるコストを全体的に削減できます。

この記事で紹介するパターンとソリューションはすべて、以下の概要に従ってお客様の AWS アカウントで使用できます。

前提条件

ソリューションウォークスルー

今回紹介しているパターンは、AWS IoT Greengrass accelerators の GitHub リポジトリから入手できます。これらのパターンやその他の利用可能なパターンを調べるには、このリポジトリを開発環境にクローンし確認してください。クローンを作成したら、表示される手順に従って環境に AWS IoT Greengrass Core デバイスをセットアップし、説明されているシナリオを調べることができます。

説明
Base Implementation IoT Greengrass コアデバイスのプロビジョニングの基本パターンです。
Operating System Command Component 基本パターンを拡張したもので、デバイスのコマンドと制御機能の実装例を紹介しています。
AWS IoT SiteWise Deployment 基本パターンを拡張したもので、AWS IoT SiteWise を使用した OPC-UA による産業用テレメトリの取り込みを紹介しています。

各列のリンク先に記載されているデプロイ手順に従うと、すぐに使い始めることができます。これらのソリューション例をカスタマイズして、さまざまなユースケースに適応させることができます。また、既存のパターンを基盤として新しい AWS CDK スタックを作成し、独自のユースケースに合わせてカスタムコンポーネントを作成してテストすることもできます。すべてのサンプルを AWS Cloud9 にデプロイして、アーティファクトをローカルにインストールまたはデプロイしなくても、迅速に検証することができます。

クリーンアップ

追加料金が発生しないように、この記事で作成したリソースを削除してください。

作成した CloudFormation スタックを削除するには:

  1. https://console.aws.amazon.com/cloudformation/AWS CloudFormation コンソールを開きます。
  2. 削除するスタックを選択すると、その詳細が表示されます。
  3. Delete を選択し、最新のスタックから例を実行して作成された各スタックの削除を確認します。スタックが順番に削除されるのを待ちます。

まとめ

この投稿では、AWS CDK、AWS IoT Greengrass、Docker を組み合わせて AWS で迅速な IoT ソリューションのプロトタイピングを実現する方法を説明しました。宣言型インフラストラクチャをコードとして使用し、コンテナ化と自動化を行うことで、パターンベースのプロトタイピングアプローチを採用して、一般的な IoT ソリューションシナリオを迅速に構築できます。コア機能の構築に費やす時間を短縮することで、IoT ソリューションの差別化と革新的な機能の実現に集中できます。これにより、市場投入までの全体的な時間も短縮されます。

詳細については、他のプロトタイプパターンの作成に役立つ AWS クラウド開発キット (AWS CDK)AWS IoT Greengrass、および AWS IoT Greengrass accelerators を参照してください。

著者について

Maxim Chernyshev Headshot

Maxim Chernyshev

Maxim Chernyshev は、AWS で鉱業、エネルギー、産業分野の顧客を担当するシニアソリューションアーキテクトです。西オーストラリア州パースに拠点を置く Maxim は、適用可能な幅広いAWSのサービスと機能を使用して、お客様が複雑で斬新な問題に対するソリューションを考案できるよう支援しています。Maxim は、産業用IoT、スケーラブルな IT/OT コンバージェンス、サイバーセキュリティに情熱を注いでいます。

この記事は Maxim Chernyshev によって書かれた Patterns for rapid IoT solution prototyping using AWS IoT Greengrass and Docker の日本語訳です。ソリューションアーキテクトの川﨑 裕希が翻訳しました。