AWS IoT Greengrass よくある質問

全般

AWS IoT Greengrass は、モノのインターネット (IoT) のオープンソースエッジランタイムおよびクラウドサービスであり、デバイスソフトウェアの構築、デプロイ、および管理を支援します。お客様は、家庭、工場、車両、企業の何百万台のデバイスで IoT アプリケーションに AWS IoT Greengrass を使用しています。デバイスをプログラムして、生成したデータにローカルで対応し、機械学習モデルに基づいて予測を実行し、デバイスデータをフィルタリングして集計して、必要な情報のみをクラウドに送信することができます。

AWS IoT Greengrass を使用すれば、インテリジェントなデバイスソフトウェアをすばやく簡単に構築できます。AWS IoT Greengrass は、ローカル処理、メッセージング、データ管理、ML 推論を可能にし、アプリケーションの開発を加速するための構築済みコンポーネントを提供します。AWS IoT Greengrass は、エッジデバイスを任意の AWS のサービスおよびサードパーティー製サービスにシームレスに接続するための安全な方法も提供します。

ソフトウェアの開発が完了すると、AWS IoT Greengrass を使用して、ファームウェアを更新することなく、フィールド内のデバイス上のソフトウェアをリモートで管理および操作できます。AWS IoT Greengrass を使えば、デバイスを最新の状態に保ち、時間の経過とともにスマートに使用できます。

AWS IoT Greengrass 入門ガイドを参照するには、こちらをクリックしてください。認定デバイス一覧は、AWS IoT パートナーデバイスカタログで確認できます。

AWS IoT Greengrass を利用できるリージョンの最新情報については、AWS リージョン表を参照してください。

AWS IoT Greengrass は、クラウドサービスと AWS IoT Greengrass Core、AWS IoT Device SDK、および AWS IoT Greengrass SDK の IoT デバイスの 2 つのソフトウェアディストリビューションで構成されています。ソフトウェアのディストリビューションがデバイスにインストールされると、AWS IoT Greengrass を使用して、機能やコンポーネントをさらに追加または削除したり、IoT デバイスアプリケーションを管理したりすることができます。

以下の図は、主なコンポーネントについて説明しています。AWS IoT Greengrass も FreeRTOS と連携して動作します。AWS IoT Greengrass と FreeRTOS の詳細については、よくある質問の FreeRTOS やその他のデバイスの AWS IoT Greengrass への接続セクションを参照してください。
 

  目的 実行される場所
 
AWS IoT Greengrass Core ローカルサービス (コンピューティング、メッセージング、状態、セキュリティ) を提供し、AWS IoT Device SDK を実行するデバイスとローカルで通信します Linux などの汎用 OS を実行する 64 ビット CPU ベースのデバイス (x86 または ARM)。
 
AWS IoT デバイス SDK デバイスが AWS IoT Greengrass Core とローカルでやり取りできるようにします C ++、Node.js、Java、または Python 2.7、3.7、および 3.8 をサポートするほぼすべてのデバイス。
AWS IoT Greengrass SDK* Lambda 関数が AWS IoT Greengrass Core のローカルサービスとやり取りできるようにします AWS IoT Greengrass Core にデプロイされた Lambda 関数の内部

* AWS IoT Greengrass バージョン 1 でのみ必須

AWS IoT Greengrass Core ソフトウェアは、IoT デバイス、ハブ、またはゲートウェイで実行され、クラウドと自動的にやり取りして同期されます。AWS IoT Greengrass Core は、汎用プロセッサーを搭載し、Linux などの汎用オペレーティングシステムを実行できる性能を備えたデバイスで実行されるように設計されています。AWS IoT Greengrass には、1 GHz 以上のコンピューティング能力 (ARM または X86 のいずれか)、96 MB* 以上の RAM (v2.0 エッジランタイム以上) に加え、ユースケースに応じて、ご希望の OS、メッセージスループット、AWS Lambda の実行に対応できる追加リソースが必要です。AWS IoT Greengrass Core は、Raspberry Pi からサーバーレベルのアプライアンスまで幅広いデバイスで実行できます。

* 次の JDK を使用した AWS の調査に基づく: テストに使用した JDK バージョン: openjdk バージョン "1.8.0_275"、OpenJDK ランタイム環境 (ビルド 1.8.0_275-8u275-b01-0ubuntu1~18.04-b01)、および OpenJDK 64 ビットサーバー VM (ビルド 25.275-b01、混合モード)。異なる入力内容を使用すると、メモリ使用量が増える可能性があります。

AWS IoT Greengrass は、以下の言語で作成された Lambda 関数をサポートしています。

  • Python 2.7、3.7、および 3.8
  • Node v8.10 および v12.x
  • Java 8 以上
  • C
  • C++
  • C ライブラリのインポートをサポートするすべての言語 

Python 2.7、3.7、または 3.8、Node v8.10 または v12.x、または Java 8 Lambda ランタイムを使用する Lambda であれば、いずれも AWS IoT Greengrass Core にデプロイできます。AWS IoT Greengrass にデプロイする Lambda は、AWS IoT Greengrass Core SDK と共にパッケージ化する必要があります。さらに、Amazon DynamoDB などの AWS のサービスと簡単にやりとりするために、Lambda のパッケージに AWS SDK を追加することもできます。

次のことにご注意ください: AWS IoT Greengrass Core がオフラインモードのときは、Lambda が依存する一部のクラウドサービス (DynamoDB など) を Lambda 関数で利用できず、それらのサービスへの API コールも失敗します。また、AWS IoT Greengrass Core SDK と AWS SDK の両方を同じパッケージに含める場合は、Lambda 関数でそれぞれの適切な名前空間を使用する必要があります。

はい、AWS IoT Greengrass デバイスで Docker コンテナを実行するか、Docker コンテナ環境で AWS IoT Greengrass を実行できます。

AWS IoT Greengrass で Docker コンテナをデプロイ、実行、管理できます。サードパーティツールを使用して、Docker/Open Container Initiative (OCI) イメージを構築し、Docker イメージは、Amazon Elastic Container Registry (Amazon ECR)、Docker Hub、プライベートな Docker Trusted Registries (DTR) などの Docker コンテナーレジストリに保存できます。

AWS IoT Greengrassグ ループを Lambda コンテナ化なしで実行するように構成することにより、Docker コンテナで AWS IoT Greengrass を実行できます。開始するには、こちらから AWS IoT Greengrass Docker ファイルにアクセスします。Amazon ECR から AWS IoT Greengrass Docker イメージを取得する方法に関するドキュメントはこちらからご覧ください。さまざまな Linux ディストリビューションを実行できるコンテナ化したソフトウェアパッケージであるスナップとして、AWS IoT Greengrass をデプロイすることもできます。まず、こちらから AWS IoT Greengrass スナップにアクセスした後、こちらから開始してください。

はい、Greengrass Lambda コンテナ化なしで Docker コンテナ内のグループレベルで AWS IoT Greengrass を実行すると、Mac OS または Windows 上で AWS IoT Greengrass を実行できます。ドキュメントでこの機能についてもっと学ぶことができます。

AWS IoT Greengrass SLA では、AWS IoT Greengrass において最低 99.9% の月間稼働率を達成できなかったときに、月間サービス料金の一部がクレジットの対象になる場合を規定します。

SLA の利用規約に関するすべての詳細、およびクレームを提出する方法の詳細については、AWS IoT Greengrass SLA の詳細ページを参照してください。

AWS IoT Greengrass 2.0 以降、エッジランタイムといくつかのコンポーネントがオープンソースになり、GitHub で公開されています。詳細については、オープンソースコンポーネント一覧を参照してください。

はい。AWS IoT Greengrass は、Apache 2.0 ライセンスの下で配布されるオープンソースのエッジランタイムであるため、アプリケーションまたはプロジェクトの特定のニーズに合わせて変更することができます。AWS の許可は必要ありません。

いいえ。バージョン間での料金に違いはありません。詳細な料金については、料金ページをご覧ください。

ローカルリソースアクセス

「ローカルリソース」は、AWS IoT Greengrass ホストに物理的に存在するバスおよび周辺機器、または AWS IoT Greengrass ホスト OS のファイルシステムボリュームを指します。たとえば、Modbus/CANbus 経由で接続されたデバイスと通信するには、AWS IoT Greengrass Lambda 関数でデバイスのシリアルポートにアクセスする必要があります。ローカルリソースは AWS IoT Greengrass グループスコープで定義され、AWS IoT Greengrass グループのすべての Lambda は定義されたローカルリソースを使用できます。

AWS IoT Greengrass ローカルリソースにより、Lambda 関数をセンサーやアクチュエータなどのハードウェアと安全にやり取りできます。たとえば、Lambda 関数は、デバイスのカメラからビデオストリームを読み込むことも、GPIO にコマンドと制御を送信することもできます。

セキュリティ

ハードウェアの信頼のルートは、不正使用を保護する、信頼できる実行環境を提供します。真性乱数ジェネレーターが暗号化機能に使用されるプライベートキーを生成することができます。これらのハードウェアの「セキュアエレメント」は、マルウェアの不正使用に対して耐性があり、物理的に特定の IoT デバイスに結び付けられているため、ソフトウェアを安全にデプロイできる強力な信頼のルートを確立します。

まず、セキュアエレメントを備えたエッジデバイスで AWS IoT Greengrass Core ソフトウェアを実行する必要があります。ハードウェアベンダーの指示に従って、セキュアエレメントにプライベートキーを生成します。次に、ドキュメントに従って、セキュアエレメントのプライベートキーを使用するように config.json ファイルの設定を更新します。

統合ハードウェアの最新リストについては、AWS Partner Device Catalog をご覧ください。

セキュアエレメントのベンダーは、一連の PKCS#11 標準 API を使用して AWS IoT Greengrass と統合するようにセキュアエレメントを設定しました。ベンダーは一連のテストツールを使用して、ハードウェアが正しく構成されていることを確認します。

ML 推論

AWS IoT Greengrass デバイスでは、Amazon SageMaker Neo で最適化されたモデルを使用して、ローカルで生成されたデータに対して ML 推論を実行できます。推論のためにデバイスを準備するには、デバイスに Neo DLR ランタイムをインストールする手順に従います。詳細については、「DLR のインストール」を参照してください。

ターゲットハードウェアプラットフォーム用に Amazon SageMaker Neo でモデルをコンパイルし、Amazon Simple Storage Service (Amazon S3) バケットに保存できます。次に、Amazon S3 バケットを使用してデバイス上のローカル推論用の Neo 最適化モデルをデプロイするように AWS IoT Greengrass を構成できます。

他でトレーニングされた ML モデルは .tar.gz および .zip フォーマットで Amazon S3 に入れて持ち込めます。次いで AWS IoT Greengrass に Simple Storage Service (Amazon S3) URI を伝えると、AWS IoT Greengrass はターゲットデバイスにデプロイします。

AWS IoT Greengrass ML Inference は現在 AWS IoT Greengrass が利用できるすべてのリージョンで利用可能です。AWS IoT Greengrass を利用できるリージョンの最新情報については、AWS リージョン表を参照してください。

これらの AWS リージョンの 1 つにアクセスできるすべてのお客様は、地理的な場所に関係なく AWS IoT Greengrass ML Inference をご利用いただけます。

AWS IoT Greengrass コンポーネント

AWS IoT Greengrass コンポーネントは、機械学習の推論、ローカル処理、メッセージング、データ管理などの複雑なワークフローを簡単に作成できるようにするビルディングブロックです。AWS IoT Greengrass は、ローカルおよびクラウドターゲットへのデータエクスポートをサポートする Stream Manager などのビルド済みコンポーネントも提供します。これらのコンポーネントはアプリケーションの開発を加速できるため、デバイスプロトコルの把握、認証情報の管理、外部 API とのやり取りについて心配する必要がありません。また、コードを記述せずに AWS のサービスやサードパーティー製アプリケーションとやり取りできます。さらに、AWS IoT Greengrass の上に独自のコンポーネントを構築することもできます。すべてのコンポーネントは、AWS Greengrass コンソールを介して構成および管理できるため、使いやすさを実現するように設計されています。これらのコンポーネントを使用すれば、エッジでコンポーネントを簡単に検出、インポート、構成、デプロイできるため、AWS IoT Greengrass デバイス間で共通のビジネスロジックを再利用できます。

AWS IoT Greengrass コンポーネントは、AWS IoT Greengrass コンソールの各グループの「コンポーネント」セクションで追加できます。追加したら、AWS IoT Greengrass コンポーネントのパラメータを構成し、グループをデプロイして、AWS IoT Greengrass Core デバイスに追加します。

AWS IoT Greengrass のお客様は、AWS マネジメントコンソールからアクセスできる AWS IoT Greengrass コンソール内から AWS IoT Greengrass コンポーネントを使用できます。

利用可能な AWS IoT Greengrass コンポーネントについては、AWS のドキュメントを参照してください。

プロトコルアダプタ

AWS IoT Greengrass Core で動作する Lambda 関数はネットワークリソースにアクセスできるため、Lambda を使用して、TCP/IP の上に実装されているすべてのプロトコルのサポートを実装できます。さらに、AWS IoT Greengrass ローカルリソースアクセスを利用して、ハードウェアアダプタ/ドライバにアクセスする必要があるプロトコルのサポートを実装することもできます。

AWS IoT Greengrass は、エッジデバイスへの接続に役立つ Modbus-RTU、Modbus-TCP、および EtherNet/IP プロトコルアダプターのコネクタも提供します。詳細については、こちらのコネクタのドキュメントを参照してください。

IoT SiteWise コネクタを使用して OPC UA サーバーからデバイスデータを取り込み、Modbus-TCP コネクタを使用して Modbus-TCP サーバーからデバイスデータを取り込み、EtherNet/IP コネクタを使用して EtherNet/IP サーバーからデバイスデータを取り込むことができます。AWS IoT SiteWise へのデータのエクスポートはデフォルトで有効になっており、カスタムストリームを使用して、AWS IoT Analytics、Amazon Kinesis、および Amazon S3 にデータをエクスポートすることができます。カスタムストリームを使用してデータを Lambda 関数に送信し、データをエクスポートする前にローカル処理を実行することもできます。または、ローカルにデプロイされた Lambda 関数を使用するカスタム実装を作成してデバイスデータの取り込みと処理を行い、データをローカルまたはクラウドのターゲットに配信できます。

Over the Air (OTA) アップデート

AWS は、折に触れて AWS IoT Greengrass Core ソフトウェアの最新バージョンを公開し、次の利点を提供しています。

  • 新しい機能や改善された機能を導入する
  • バグ修正
  • セキュリティの強化

AWS IoT Greengrass Over the Air (OTA) アップデートによって、お客様は、AWS IoT Greengrass Core ソフトウェアを手動でダウンロードして再インストールしなくても、これらのすべての利点を得ることができます。

いいえ。アップデートを手動でダウンロードしてインストールすることも、別のソフトウェアデプロイメントプロセスに従うこともできます。

AWS IoT Greengrass Core の新しいバージョンが利用可能になったときは、AWS IoT Greengrass ソフトウェアの開発者フォーラムで発表する予定です。そのフォーラムへのリンクはこちらです。

AWS IoT Greengrass 用 AWS IoT Device Tester

AWS IoT Greengrass 用 AWS IoT Device Tester はテストオートメーションツールです。このツールにより、Linux デバイス上で AWS IoT Greengrass をセルフテストして認定することができます。AWS IoT Device Tester は、デバイスが AWS IoT Greengrass を実行でき、そして AWS IoT サービスによって認証され、相互運用できるかどうかを検証する、一連の自動テストを提供します。

AWS IoT Greengrass 用 AWS IoT Device Tester は、こちらから手に入れることができます。

AWS IoT Greengrass 用 AWS IoT Device Tester では、次の内容をテストすることによって、デバイスの CPU アーキテクチャ、Linux カーネル構成、AWS IoT Greengrass で動作するドライバーの組み合わせを検証します。

  • 必要なソフトウェアパッケージがインストールされています 
  • AWS IoT Greengrass を含む Linux カーネルには、カーネル構成が必要です (例:cgroup 用に構成されたカーネル)
  • 無線によるアップデート
  • デバイスは AWS IoT サービスと接続して、AWS Lambda 機能を実行できます
  • ローカルリソースアクセス機能
  • デバイスシャドウ機能

サポートを受けるには、以下のチャネルのいずれかを使用してください。

AWS IoT Greengrass 用 AWS フォーラム

プレミアムサポート

カスタマーサポート

AWS パートナーの場合、AWS デバイス認定プログラムでは、カタログに記載されているデバイスを手に入れるプロセスを定義します。プロセスの概要は次のとおりです。

  1. AWS IoT Greengrass 用 AWS IoT Device Tester に合格する
     
  2. AWS パートナーネットワークポータルにログインする
     
  3. AWS IoT Device Tester レポートをアップロードする。レポートが AWS によって検証され、画像やデータシートなど、他のデバイス関連のアーティファクトが送信されると、そのデバイスは AWS Partner Device Catalog に登録されます。

AWS IoT Greengrass 用 AWS IoT Device Tester は、AWS IoT Greengrass を利用できるすべてのリージョンで利用できます。

AWS IoT Greengrass 用 AWS IoT Device Tester は無料で利用できます。ただし、テストの一環として、AWS の使用料に関連する費用はお客様の負担となります。1 台の AWS IoT Greengrass デバイスで AWS IoT Device Tester テストを 1 回実行する場合にかかる費用は 20 セント未満です。

オペレーティングシステムと CPU アーキテクチャは AWS IoT Greengrass Core でサポートされており、こちらの一覧にある AWS との互換性についてテスト済みです。 AWS IoT Greengrass チームがまだ検証を完了していない他の Linux の亜種でも AWS IoT Greengrass を正常に実行できます。GitHub の IoT Greengrass 依存関係チェッカーを使用して、他の亜種との互換性を検証できます。あるいは、IoT Greengrass を「process mode」で実行できます。ただし、互換性が低く、Linux コンテナのサポートは削除されます。

最小ハードウェアとソフトウェア要件 を満たすデバイスで AWS IoT Greengrass Core を実行できます。また、デバイスをセルフテストして、AWS IoT Device Tester を使用して、AWS IoT Greengrass およびその他の AWS のサービスで最適に実行されるかどうかを確認できます。また、AWS Partner Device Catalog で AWS IoT Greengrass と互換性のあるデバイスを検出して評価することもできます。

お使いのデバイスが AWS IoT Greengrass Core で動作するか確認するには、AWS IoT Greengrass 用 AWS IoT Device Tester を使用してデバイスをテストできます。ツールをダウンロードしてドキュメントを読むことができます。

FreeRTOS やその他のデバイスの AWS IoT Greengrass への接続

FreeRTOS または AWS IoT Device SDK を使用して、デバイスを AWS IoT Greengrass Core にローカルで接続することができます。AWS IoT Greengrass の検出機能は C++ と Node.js、Java、Python 2.7、3.7、および 3.8 を介して AWS IoT Device SDK で利用できます。詳細については、AWS IoT Greengrass デベロッパーガイドを参照してください。FreeRTOS ソースコードの AWS IoT Greengrass Discovery ライブラリを使用して、AWS IoT Greengrass Core デバイスを検索して接続できます。

AWS IoT Greengrass の検出機能は C++ と Node.js、Java、Python 2.7、3.7、および 3.8 を介して AWS IoT Device SDK で利用できます。詳細については、AWS IoT Greengrass デベロッパーガイドを参照してください。

はい。FreeRTOS デバイスは、クラウドに直接接続することも、AWS IoT Greengrass に接続することもできます。FreeRTOS は IoT エンドポイント上で動作し、IoT トポロジにおける「センシング」と「作動」を担当します。

AWS IoT Greengrass は、ローカルコンピューティング、メッセージング、データキャッシュ、同期、機械学習の推論といった機能をコネクテッドデバイスで安全に実行できるようにするソフトウェアです。AWS IoT Greengrass では、接続されたデバイスから AWS Lambda 関数、Docker コンテナ、またはその両方を実行し、デバイスデータを常に同期させ、他のデバイスと安全に通信できます。これはインターネットに接続していないときでも可能です。AWS IoT Greengrass では、AWS Lambda を使用することで、IoT デバイスがローカルイベントにすばやく対応して、AWS IoT Greengrass Core 上で動作する Lambda 関数を使用してローカルリソースとやり取りし、断続的な接続で動作し、OTA アップデートによって常に最新の状態を維持して、IoT データのクラウドへの送信コストを最小限に抑えることができるようになります。

FreeRTOS は、エッジで動作し、AWS IoT Greengrass を実行できるチップセットを一般的にサポートしていないマイクロコントローラ用のオープンソースでリアルタイムのオペレーティングシステムです。これらのマイクロコントローラデバイスは、フィットネストラッカー、ペースメーカー、電気メーター、自動車トランスミッション、センサーネットワークなどのさまざまな IoT エンドポイントにあります。FreeRTOS デバイスは AWS IoT Greengrass Core を実行できませんが、エッジでのローカル処理のために AWS IoT Greengrass Core デバイスとメッセージを接続、送信、および受信できます。

両方のデバイスではハードウェア要件とオペレーティングシステムが異なります。
 

  FreeRTOS AWS IoT Greengrass
ソフトウェア リアルタイムオペレーティングシステム、マイクロコントローラで動作 Linux デバイス用のランタイムと AWS IoT Greengrass 対応デバイス用の SDK
ハードウェア要件 64 KB を超える RAM

96 MB* を超える RAM (v2.0 エッジランタイム以上)

128 MB を超える RAM (v1.11 エッジランタイム以下)

カテゴリ 組み込みシステム、IoT エンドポイント エッジデバイス、ローカルゲートウェイ
ユースケース マイクロコントローラベースのデバイス 産業オートメーションシステム、ワイヤレスルーター、ビデオカメラ、ゲートウェイ

* 次の JDK を使用した AWS の調査に基づく: テストに使用した JDK バージョン: openjdk バージョン "1.8.0_275"、OpenJDK ランタイム環境 (ビルド 1.8.0_275-8u275-b01-0ubuntu1~18.04-b01)、および OpenJDK 64 ビットサーバー VM (ビルド 25.275-b01、混合モード)。異なる入力内容を使用すると、メモリ使用量が増える可能性があります。