AWS IoT Greengrass Version 1 は 2023 年 6 月 30 日に延長ライフフェーズに参加しました。詳細については、「AWS IoT Greengrass V1 メンテナンスポリシー」を参照してください。この日以降、 AWS IoT Greengrass V1 は機能、機能強化、バグ修正、またはセキュリティパッチを提供する更新をリリースしません。で実行されるデバイスは中断 AWS IoT Greengrass V1 されず、引き続き動作し、クラウドに接続します。に移行することを強くお勧めします。 AWS IoT Greengrass Version 2これにより、重要な新機能が追加され、プラットフォーム のサポートが追加されます。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Greengrass コネクタを使用したサービスおよびプロトコルとの統合
この機能は AWS IoT Greengrass Core v1.7 以降で使用できます。
AWS IoT Greengrass のコネクタは、ローカルインフラストラクチャ、デバイスプロトコル、AWS、その他のクラウドサービスとの通信をさらに効率化する事前統合済みのモジュールです。コネクタを使用すれば、新しいプロトコルや API を学習する時間を短縮し、ビジネスにとって重要なロジックに注力できます。
次の図は、AWS IoT Greengrass 環境でコネクタが役立つ場所を示しています。
![コネクタはデバイス、サービス、ローカルリソースに接続する。](images/connectors/connectors-arch.png)
多くのコネクタは、MQTT メッセージを使用して、グループのクライアントデバイスや Greengrass Lambda 関数、または AWS IoT やローカルシャドウサービスと通信します。以下の例では、Twilio 通知コネクタはユーザー定義の Lambda 関数による MQTT メッセージを受信し、AWS Secrets Manager からのシークレットのローカル参照を使用して、Twilio API を呼び出します。
![コネクタは Lambda 関数からの MQTT メッセージを受信し、サービスを呼び出します。](images/connectors/twilio-solution.png)
このソリューションを作成するチュートリアルについては、「Greengrass コネクタの開始方法 (コンソール)」および「Greengrass コネクタの開始方法 (CLI)」を参照してください。
Greengrass コネクタは、デバイスの機能を拡張したり、専用デバイスを作成したりするのに役立ちます。コネクタを使用すると次のことができます。
-
再利用可能なビジネスロジックを実装する。
-
AWS やサードパーティーのサービスを含め、クラウドサービスおよびローカルサービスとやり取りする。
-
デバイスのデータを収集して処理する。
-
MQTT トピックのサブスクリプションとユーザー定義の Lambda 関数を使用して、デバイス間呼び出しを可能にする。
AWS では、一般的なサービスおよびデータソースとのやり取りを簡略化する一連の Greengrass コネクタを提供しています。これらの事前構築済みモジュールにより、ログ記録と診断、補充、産業データ処理、アラームとメッセージングのシナリオに対応できます。詳細については、「AWS が提供する Greengrass コネクタ」を参照してください。
要件
コネクタを使用する際は次の点に注意してください。
-
使用するコネクタにはそれぞれに要件があり、それを満たす必要があります。これらの要件には、AWS IoT Greengrass コアソフトウェアの最小バージョン、デバイスの前提条件、必要なアクセス許可、制限などがあります。詳細については、「AWS が提供する Greengrass コネクタ」を参照してください。
-
Greengrass グループに含めることができる、コネクタの設定済みインスタンスは 1 つのみですが、このインスタンスは複数のサブスクリプションで使用することができます。詳細については、「設定パラメータ」を参照してください。
-
Greengrass グループのデフォルトのコンテナ化が [コンテナなし] に設定されている場合、グループのコネクタはコンテナ化なしで実行する必要があります。コンテナなしモードをサポートするコネクタを検索するには、「AWS が提供する Greengrass コネクタ」を参照してください。
Greengrass コネクタの使用
コネクタはグループコンポーネントの一種です。他のグループコンポーネント (クライアントデバイスおよびユーザー定義の Lambda 関数など) と同様に、グループにコネクタを追加して、設定を行い、AWS IoT Greengrass Core にデプロイします。コネクタは、コア環境で実行されます。
一部のコネクタは、シンプルなスタンドアロンアプリケーションとしてデプロイすることができます。例えば、Device Defender コネクタは Core デバイスからシステムメトリクスを読み取り、解析のためにそれらを AWS IoT Device Defender に送信します。
それ以外のコネクタは、さらに大きいソリューションの構成要素として追加することができます。以下のサンプルソリューションでは、Modbus-RTU プロトコルアダプタコネクタはセンサーからのメッセージを処理し、Twilio 通知コネクタは Twilio メッセージを開始します。
![Lambda 関数から Modbus-RTU プロトコルアダプタコネクタ、Lambda 関数、Twilio 通知コネクタ、Twilio への一連のデータフロー。](images/connectors/modbus-twilio-solution.png)
ソリューションには、多くの場合、コネクタの横に配置され、コネクタが送受信するデータを処理するユーザー定義の Lambda 関数が含まれています。この例でその役割にあたる TempMonitor 関数は、Modbus-RTU プロトコルアダプタからデータを受信し、ビジネスロジックを実行して、データを Twilio 通知に送信します。
ソリューションを作成してデプロイするには、以下の一般的なプロセスに従います。
-
データフローの概要を設計します。作業に必要なデータソース、データチャネル、サービス、プロトコル、リソースを特定します。このサンプルソリューションでは、Modbus RTU プロトコル、物理 Modbus シリアルポート、Twilio でのデータが含まれています。
-
ソリューションに含めるコネクタを特定し、グループに追加します。このサンプルソリューションでは、Modbus-RTU プロトコルアダプタと Twilio 通知を使用します。シナリオに該当するコネクタを見つけ、個々の要件を知るには、「AWS が提供する Greengrass コネクタ」を参照してください。
-
ユーザー定義の Lambda 関数、クライアントデバイス、またはリソースが必要かどうかを特定し、それらを作成してグループに追加します。例えば、ビジネスロジックを含む関数や、ソリューション内の別のエンティティに必要な形式にデータを加工する関数を作成して追加します。このサンプルソリューションでは、Modbus RTU リクエストを送信して Twilio 通知を開始する関数を使用しています。また、Modbus RTU シリアルポートのローカルデバイスリソースと、Twilio 認証トークンのシークレットリソースも含まれています。
注記
シークレットリソースは、AWS Secrets Manager からのパスワード、トークン、および他のシークレットを参照します。シークレットは、コネクタおよび Lambda 関数でサービスやアプリケーションの認証に使用できます。デフォルトでは、AWS IoT Greengrass は名前が「greengrass-」で始まるシークレットにアクセスできます。詳細については、「AWS IoT Greengrass Core にシークレットをデプロイする」を参照してください。
-
ソリューション内のエンティティに MQTT メッセージの交換を許可するサブスクリプションを作成します。サブスクリプションでコネクタを使用する場合、コネクタ、およびメッセージのソースまたはターゲットでは、コネクタによってサポートされている事前定義済みのトピック構文を使用する必要があります。詳細については、「入力と出力」を参照してください。
-
Greengrass Core にグループをデプロイします。
コネクタを作成してデプロイする方法については、次のチュートリアルを参照してください。
設定パラメータ
多くのコネクタには、動作や出力をカスタマイズするためのパラメータが用意されています。これらのパラメータは、コネクタのライフサイクルでの初期化時、実行時などのタイミングで使用します。
パラメータのタイプと使用方法はコネクタごとに異なります。例えば、SNS コネクタにはデフォルトの SNS トピックを設定するパラメータがあり、Device Defender にはデータサンプリングレートを設定するパラメータがあります。
グループバージョンには、複数のコネクタを含めることができますが、一度に使用されるコネクタのインスタンスは 1 つのみです。これは、グループの各コネクタのアクティブな設定は 1 つだけであることを意味します。ただし、コネクタインスタンスはグループ内の複数のサブスクリプションで使用できます。例えば、複数のデバイスに Kinesis Firehose コネクタへのデータの送信を許可するサブスクリプションを作成できます。
グループリソースへのアクセスに使用するパラメータ
Greengrass コネクタでは、グループリソースを使用して、Core デバイス上のファイルシステム、ポート、周辺機器、その他のローカルリソースにアクセスします。コネクタには、グループリソースへのアクセスを必要とする場合に使用する設定パラメータがあります。
グループリソースには以下のものが含まれます。
-
ローカルリソース。Greengrass Core デバイス上に存在するディレクトリ、ファイル、ポート、ピン、周辺機器。
-
機械学習リソース。クラウドでトレーニングされ、ローカル推論のために Core にデプロイされる機械学習モデル。
-
シークレットリソース。AWS Secrets Manager からのパスワード、キー、トークン、または任意のテキストの暗号化されたローカルコピー。コネクタは、これらのローカルシークレットに安全にアクセスし、それらを使用してサービスまたはローカルインフラストラクチャを認証できます。
例えば、Device Defender のパラメータにより、ホストの /proc
ディレクトリのシステムメトリクスへのアクセスが可能になり、Twilio 通知のパラメータにより、ローカルに保存された Twilio 認証トークンへのアクセスが可能になります。
コネクタのパラメータの更新
コネクタを Greengrass グループに追加すると、パラメータが設定されます。コネクタを追加したら、パラメータ値を変更することができます。
-
コンソールの場合: グループ設定ページで [コネクタ] を開き、コネクタのコンテキストメニューから [編集] を選択します。
注記
コネクタで使用されているシークレットリソースを、別のシークレットを参照するように後で変更する場合は、コネクタのパラメータを編集し、変更を確認する必要があります。
-
API の場合: 新しい設定を定義する別のバージョンのコネクタを作成します。
AWS IoT Greengrass API はバージョンを使用してグループを管理します。バージョンは変更不可であるため、グループのクライアントデバイス、関数、リソースといったグループコンポーネントを追加または変更するには、新規または更新済みコンポーネントのバージョンを作成する必要があります。その後、各コンポーネントのターゲットバージョンを含むグループバージョンを作成およびデプロイします。
コネクタの設定に変更を加えたら、これらの変更をコアに反映するためにグループをデプロイする必要があります。
入力と出力
多くの Greengrass コネクタは、MQTT メッセージを送受信することで、他のエンティティと通信できます。MQTT 通信を制御するサブスクリプションでは、Lambda 関数、クライアントデバイス、および Greengrass グループのコネクタとのデータ交換、または AWS IoT およびローカルシャドウサービスとのデータ交換をコネクタに許可します。この通信を許可するには、コネクタが属するグループにサブスクリプションを作成する必要があります。詳細については、「MQTT メッセージングワークフローにおけるマネージドサブスクリプション」を参照してください。
コネクタは、メッセージ受信者、メッセージ発行者、またはその両方になります。各コネクタは、発行またはサブスクライブする MQTT トピックを定義します。メッセージソースまたはメッセージターゲットがコネクタとなるサブスクリプションでは、これらの事前定義済みのトピックを使用する必要があります。コネクタのサブスクリプションを設定する手順が含まれているチュートリアルについては、「Greengrass コネクタの開始方法 (コンソール)」と「Greengrass コネクタの開始方法 (CLI)」を参照してください。
注記
多くのコネクタには、クラウドサービスまたはローカルサービスとやり取りするための組み込みの通信モードもあります。これらのモードはコネクタごとに異なり、パラメータの設定やグループロールへのアクセス許可の追加が必要になる場合があります。コネクタの要件については、「AWS が提供する Greengrass コネクタ」を参照してください。
入力トピック
コネクタには通常、MQTT トピックに関する入力データが送信されます。一部のコネクタは、入力データ用に複数のトピックにサブスクライブします。例えば、シリアルストリーミングコネクタは以下の 2 つのトピックをサポートしています。
-
serial/+/read/#
-
serial/+/write/#
このコネクタでは、読み取りリクエストと書き込みリクエストを対応するトピックに送信します。サブスクリプションを作成するときは、実装に合ったトピックを使用してください。
前の例の +
文字と #
文字はワイルドカードです。これらのワイルドカードを使用すると、受信者は複数のトピックに関するメッセージを受信できます。発行者は発行先のトピックをカスタマイズできます。
-
+
ワイルドカードは、トピック階層の任意の場所に使用できます。このワイルドカードは、1 つの階層項目に置き換わります。例えば、
sensor/+/input
トピックの場合、メッセージをsensor/id-123/input
トピックには発行できますが、sensor/group-a/id-123/input
トピックには発行できません。
-
#
ワイルドカードは、トピック階層の末尾にのみ使用できます。0 以上の階層項目で置き換えることができます。例えば、
sensor/#
トピックの場合、メッセージをsensor/
、sensor/id-123
、sensor/group-a/id-123
には発行できますが、sensor
には発行できません。
ワイルドカード文字は、トピックにサブスクライブするときにのみ有効です。ワイルドカードを含むトピックにメッセージを発行することはできません。入力または出力トピックの要件の詳細については、コネクタのドキュメントを参照してください。詳細については、「AWS が提供する Greengrass コネクタ」を参照してください。
コンテナ化のサポート
デフォルトでは、ほとんどのコネクタは、AWS IoT Greengrass によって管理されている分離されたランタイム環境の Greengrass コア上で実行されます。コンテナと呼ばれるこれらのランタイム環境は、コネクタとホストシステム間の分離を実現します。これにより、ホストとコネクタのセキュリティが強化されます。
ただし、この Greengrass コンテナ化は、cgroups のない古い Linux カーネルや Docker コンテナで AWS IoT Greengrass を実行している場合など、一部の環境ではサポートされていません。これらの環境では、コネクタはコンテナなしモードで実行する必要があります。コンテナなしモードをサポートするコネクタを検索するには、「AWS が提供する Greengrass コネクタ」を参照してください。一部のコネクタはこのモードでネイティブに動作し、一部のコネクタでは分離モードを設定できます。
Greengrass コンテナ化をサポートする環境では、分離モードを [コンテナなし] に設定することもできますが、可能であれば [Greengrass コンテナ] モードを使用することをお勧めします。
注記
Greengrass グループの既定のコンテナ化設定は、コネクタには適用されません。
コネクタのバージョンのアップグレード
コネクタプロバイダーは、機能の追加、問題の修正、パフォーマンスの向上を行うコネクタの新しいバージョンをリリースすることがあります。使用可能なバージョンおよび関連する変更については、各コネクタのドキュメントを参照してください。
AWS IoT コンソールでは、Greengrass グループのコネクタの新しいバージョンを確認できます。
AWS IoT コンソールのナビゲーションペインの [Manage](管理)で、[Greengrass devices](Greengrass デバイス)を展開して、[Group (V1)](グループ (V1))を選択します。
-
[Greengrass groups] (Greengrass グループ) で、対象グループを選択します。
-
[コネクタ] を選択して、グループのコネクタを表示します。
新しいバージョンのコネクタがある場合は、[Available] (利用可能) ボタンが [Upgrade] (アップグレード) 列に表示されます。
-
コネクタのバージョンをアップグレードするには:
-
[コネクタ] ページの [アップグレード] 列で、[使用可能] を選択します。[コネクタのアップグレード] ページが開き、現在のパラメータ設定が表示されます (該当する場合)。
新しいコネクタのバージョンを選択し、必要に応じてパラメータを定義して、[アップグレード] を選択します。
-
[サブスクリプション] ページで、新しいサブスクリプションをグループに追加して、コネクタをソースまたはターゲットとして使用しているサブスクリプションを置き換えます。次に、古いサブスクリプションを削除します。
サブスクリプションはバージョンごとにコネクタを参照するため、グループのコネクタバージョンを変更すると無効になります。
-
[アクション] メニューから [デプロイ] を選択し、変更をコアにデプロイします。
-
AWS IoT Greengrass API からコネクタをアップグレードするには、更新されたコネクタとサブスクリプションを含むグループバージョンを作成してデプロイします。コネクタをグループに追加する場合と同じプロセスを使用します。AWS CLI を使用して Twilio 通知コネクタのサンプルを設定およびデプロイする方法の詳細な手順については、「Greengrass コネクタの開始方法 (CLI)」を参照してください。
コネクタのログ記録
Greengrass コネクタには、Greengrass ログにイベントとエラーを書き込む Lambda 関数が含まれています。グループ設定に応じて、ログは CloudWatch Logs、ローカルファイルシステム、またはその両方に書き込まれます。コネクタからのログには、対応する関数の ARN が含まれています。以下のサンプル ARN は、Kinesis Firehose コネクタのものです。
arn:aws:lambda:aws-region
:account-id
:function:KinesisFirehoseClient:1
ログ記録のデフォルト設定では、情報レベルのログが以下のディレクトリ構造でファイルシステムに書き込まれます。
greengrass-root
/ggc/var/log/user/region
/aws/function-name
.log
Greengrass のログ記録の詳細については、「AWS IoT Greengrass ログでのモニタリング」を参照してください。