2023 年 6 月 30 日に AWS IoT Greengrass Version 1 は延長ライフサイクルフェーズに入りました。詳細については、「AWS IoT Greengrass V1 メンテナンスポリシー」を参照してください。この日付以降、AWS IoT Greengrass V1 の機能、拡張機能、バグ修正、またはセキュリティパッチを提供するアップデートはリリースされません。AWS IoT Greengrass V1 で稼働中のデバイスは中断されず、引き続き動作し、クラウドに接続できます。重要な新機能や新たなプラットフォームのサポートが追加された AWS IoT Greengrass Version 2 への移行を強くお勧めします。
通信をテストする
-
コンピュータおよび AWS IoT Greengrass Core デバイスが、インターネットに接続されていて同じネットワークを使用していることを確認します。
-
AWS IoT Greengrass Core デバイスで、次のコマンドを実行して IP アドレスを見つけます。
hostname -I
-
コンピュータで、コアの IP アドレスを使用して次のコマンドを実行します。ping コマンドを停止するには、Ctrl + C を使用できます。
ping
IP-address
出力が以下のような場合、コンピュータと AWS IoT Greengrass Core デバイス間の通信は正常です (パケット損失 0%)。
注記
AWS IoT Greengrass を実行している EC2 インスタンスに ping できない場合は、インスタンスのインバウンドセキュリティグループルールが エコーリクエストメッセージの ICMP トラフィックを許可するようにしてください。詳細については、「Amazon EC2 ユーザーガイド」の「セキュリティグループへのルールの追加」を参照してください。
Windows ホストコンピュータでは、セキュリティが強化された Windows ファイアウォールアプリケーションで、インバウンドエコーリクエストを許可するインバウンドルール ([File and Printer Sharing (Echo Request - ICMPv4-In)] など) を有効にするか作成することが必要になる場合もあります。
-
-
AWS IoT エンドポイントを取得します。
-
AWS IoT コンソール
のナビゲーションペインから、[Settings] (設定) を選択します。 -
[Device data endpoint] (デバイスデータエンドポイント) にある[Endpoint] (エンドポイント) の値を書き留めておきます。次の手順では、この値を使用してコマンド内の
AWS_IOT_ENDPOINT
プレースホルダーを置き換えます。注記
エンドポイントが証明書タイプに対応していることを確認してください。
-
-
コンピュータ (AWS IoT Greengrass Core デバイス以外) で、2 つのコマンドライン
(ターミナルまたはコマンドプロンプト) ウィンドウを開きます。1 つのウィンドウは HelloWorld_Publisher クライアントデバイスを、もう 1 つは HelloWorld_Subscriber クライアントデバイスを表します。 実行時に、
basicDiscovery.py
は、そのエンドポイントで AWS IoT Greengrass コアの場所に関する情報の収集を試みます。この情報は、クライアントデバイスがコアを検出して正常に接続すると、保存されます。これで、この先のメッセージとオペレーションがローカル (インターネット接続なし) で実行されるようになります。注記
MQTT 接続に使用されるクライアント ID は、クライアントデバイスのモノ名と一致する必要があります。
basicDiscovery.py
スクリプトによって、MQTT 接続のクライアント ID が、スクリプト実行時に指定したモノ名に設定されます。スクリプトの詳しい使用方法を確認するには、
basicDiscovery.py
ファイルのあるフォルダから次のコマンドを実行してください。python basicDiscovery.py --help
-
HelloWorld_Publisher クライアントデバイスのウィンドウから、次のコマンドを実行します。
-
path-to-certs-folder
を、証明書、キー、およびbasicDiscovery.py
を含むフォルダへのパスに置き換えます。 -
AWS_IOT_ENDPOINT
をエンドポイントに置き換えます。 -
2 つの
publisherCertId
インスタンスを、HelloWorld_Publisher クライアントデバイスのファイル名に含まれるクライアント ID に置き換えます。
cd
path-to-certs-folder
python basicDiscovery.py --endpointAWS_IOT_ENDPOINT
--rootCA AmazonRootCA1.pem --certpublisherCertId
-certificate.pem.crt --keypublisherCertId
-private.pem.key --thingName HelloWorld_Publisher --topic 'hello/world/pubsub' --mode publish --message 'Hello, World! Sent from HelloWorld_Publisher'Published topic 'hello/world/pubsub': {"message": "Hello, World! Sent from HelloWorld_Publisher", "sequence": 1}
のような、エントリを含む出力が表示されるはずです。注記
スクリプトが
error: unrecognized arguments
メッセージを返した場合は、--topic
および--message
パラメータの一重引用符を二重引用符に変更して、コマンドを再実行します。接続の問題のトラブルシューティングを行うには、手動で IP の検出を試すことができます。
-
-
HelloWorld_Subscriber クライアントデバイスのウィンドウから、次のコマンドを実行します。
-
path-to-certs-folder
を、証明書、キー、およびbasicDiscovery.py
を含むフォルダへのパスに置き換えます。 -
AWS_IOT_ENDPOINT
をエンドポイントに置き換えます。 -
2 つの
subscriberCertId
インスタンスを、HelloWorld_Subscriber クライアントデバイスのファイル名に含まれるクライアント ID に置き換えます。
cd
path-to-certs-folder
python basicDiscovery.py --endpointAWS_IOT_ENDPOINT
--rootCA AmazonRootCA1.pem --certsubscriberCertId
-certificate.pem.crt --keysubscriberCertId
-private.pem.key --thingName HelloWorld_Subscriber --topic 'hello/world/pubsub' --mode subscribeReceived message on topic hello/world/pubsub: {"message": "Hello, World! Sent from HelloWorld_Publisher", "sequence": 1}
のような、エントリを含む出力が表示されるはずです。 -
HelloWorld_Publisher ウィンドウを閉じて、メッセージが HelloWorld_Subscriber ウィンドウに表示されないようにします。
企業ネットワークでテストを実行すると、コアへの接続を妨げる可能性があります。回避策として、エンドポイントを手動で入力できます。これにより、basicDiscovery.py
スクリプトが AWS IoT Greengrass コアデバイスの正しい IP アドレスに接続されます。
エンドポイントを手動で入力するには
AWS IoT コンソールのナビゲーションペインの [Manage] (管理) で、[Greengrass devices] (Greengrass デバイス) を展開して、[Groups (V1)] (グループ (V1))を選択します。
-
[Greengrass グループ] で、目的のグループを選択します。
-
MQTT ブローカーのエンドポイントを手動で管理するようにコアを設定します。以下の操作を実行します。
-
グループ設定ページで、[Lambda functions] (Lambda 関数) タブを選択します。
-
[System Lambda functions] (システム Lambda 関数) から、[IP detector] (IP ディテクター)、[Edit] (編集) の順に選択します。
-
[Edit IP detector settings] (IP ディテクター設定の編集) で、[Manually manage MQTT broker endpoints] (MQTT ブローカーのエンドポイントを手動で管理する)、[Save] (保存) の順に選択します。
-
-
コアの MQTT ブローカーエンドポイントを入力します。以下の操作を実行します。
-
[Overview] (概要) で、 [Greengrass core] (Greengrass コア) を選択します。
-
[MQTT broker endpoints] (MQTT ブローカーエンドポイント) で、 [Manage endpoints] (エンドポイントの管理) を選択します。
-
[Add endpoint] (エンドポイントの追加) を選択し、エンドポイントの値が 1 つだけであることを確認します。この値は、AWS IoT Greengrass コアデバイスがポート 8883 に使用する、エンドポイントの IP アドレス (
192.168.1.4
など) でなければなりません。 -
[Update] (更新) を選択します。
-