通信をテストする - AWS IoT Greengrass

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

通信をテストする

  1. コンピュータおよび AWS IoT Greengrass Core デバイスが、インターネットに接続されていて同じネットワークを使用していることを確認します。

    1. AWS IoT Greengrass Core デバイスで、次のコマンドを実行して IP アドレスを見つけます。

      hostname -I
    2. コンピュータで、コアの IP アドレスを使用して次のコマンドを実行します。ping コマンドを停止するには、Ctrl + C を使用できます。

      ping IP-address

      出力が以下のような場合、コンピュータと AWS IoT Greengrass Core デバイス間の通信は正常です (パケット損失 0%)。

      
                        正常な ping コマンドの出力。
      注記

      AWS IoT Greengrass を実行している EC2 インスタンスに ping できない場合は、インスタンスのインバウンドセキュリティグループルールが エコーリクエストメッセージの ICMP トラフィックを許可するようにしてください。詳細については、「Linux インスタンス用 Amazon EC2 ユーザーガイド」の「セキュリティグループへのルールの追加」を参照してください。

      Windows ホストコンピュータのセキュリティが強化された Windows ファイアウォールアプリケーションで、インバウンドエコーリクエストを許可するインバウンドルール ([File and Printer Sharing (Echo Request - ICMPv4-In)] など) を有効にするか、作成する必要もあります。

  2. AWS IoT エンドポイントを取得します。

    1. AWS IoT コンソール のナビゲーションペインから、[Settings] (設定) を選択します。

    2. [Device data endpoint] (デバイス データ エンドポイント) にある [Endpoint] (エンドポイント) の値を書き留めておきます。次の手順では、この値を使用してコマンド内の AWS_IOT_ENDPOINT プレースホルダーを置き換えます。

      注記
  3. コンピュータ (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
  4. HelloWorld_Publisher クライアントデバイスのウィンドウから、次のコマンドを実行します。

    • path-to-certs-folder を、証明書、キー、および basicDiscovery.py を含むフォルダへのパスに置き換えます。

    • AWS_IOT_ENDPOINT をエンドポイントに置き換えます。

    • 2 つの publisherCertId インスタンスを、HelloWorld_Publisher クライアントデバイスのファイル名に含まれるクライアント ID に置き換えます。

    cd path-to-certs-folder python basicDiscovery.py --endpoint AWS_IOT_ENDPOINT --rootCA AmazonRootCA1.pem --cert publisherCertId-certificate.pem.crt --key publisherCertId-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 の検出を試すことができます。

    
                            発行者の出力のスクリーンショット。
  5. HelloWorld_Subscriber クライアントデバイスのウィンドウから、次のコマンドを実行します。

    • path-to-certs-folder を、証明書、キー、および basicDiscovery.py を含むフォルダへのパスに置き換えます。

    • AWS_IOT_ENDPOINT をエンドポイントに置き換えます。

    • 2 つの subscriberCertId インスタンスを、HelloWorld_Subscriber クライアントデバイスのファイル名に含まれるクライアント ID に置き換えます。

    cd path-to-certs-folder python basicDiscovery.py --endpoint AWS_IOT_ENDPOINT --rootCA AmazonRootCA1.pem --cert subscriberCertId-certificate.pem.crt --key subscriberCertId-private.pem.key --thingName HelloWorld_Subscriber --topic 'hello/world/pubsub' --mode subscribe

    Received 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 アドレスに接続されます。

エンドポイントを手動で入力するには

  1. AWS IoT コンソールのナビゲーションペインの [Manage] (管理) で、[Greengrass devices] (Greengrass デバイス) を展開して、[Groups (V1)] (グループ (V1))を選択します。

  2. [Greengrass groups] (Greengrass グループ) で、対象グループを選択します。

  3. MQTT ブローカーのエンドポイントを手動で管理するようにコアを設定します。次を実行してください。

    1. グループ設定ページで、[Lambda functions] (Lambda 関数) タブを選択します。

    2. [System Lambda functions] (システム Lambda 関数) から、[IP detector] (IP ディテクター)、[Edit] (編集) の順に選択します。

    3. [Edit IP detector settings] (IP ディテクター設定の編集) で、[Manually manage MQTT broker endpoints] (MQTT ブローカーのエンドポイントを手動で管理する)、[Save] (保存) の順に選択します。

  4. コアの MQTT ブローカーエンドポイントを入力します。次を実行してください。

    1. [Overview] (概要) で、 [Greengrass core] (Greengrass コア) を選択します。

    2. [MQTT broker endpoints] (MQTT ブローカーエンドポイント) で、 [Manage endpoints] (エンドポイントの管理) を選択します。

    3. [Add endpoint] (エンドポイントの追加) を選択し、エンドポイントの値が 1 つだけであることを確認します。この値は、AWS IoT Greengrass コアデバイスがポート 8883 に使用する、エンドポイントの IP アドレス (192.168.1.4 など) でなければなりません。

    4. [Update] (更新) を選択します。