

サポート終了通知: 2026 年 10 月 7 日、 AWS はサポートを終了します AWS IoT Greengrass Version 1。2026 年 10 月 7 日以降、 AWS IoT Greengrass V1 リソースにアクセスできなくなります。詳細については、[「 からの移行 AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html)」を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# モジュール 4: AWS IoT Greengrass グループ内のクライアントデバイスを操作する
<a name="module4"></a>

このモジュールでは、クライアントデバイスまたは*デバイス*と呼ばれるローカル IoT デバイスが、 AWS IoT Greengrass コアデバイスに接続して通信する方法を示します。 ** AWS IoT Greengrass コアに接続するクライアントデバイスは AWS IoT Greengrass グループの一部であり、 AWS IoT Greengrass プログラミングパラダイムに参加できます。このモジュールでは、あるクライアントデバイスから Greengrass グループの別のクライアントデバイスに Hello World メッセージを送信します。

![\[AWS IoT は、クライアントデバイス #1 とクライアントデバイス #2 に接続されている AWS IoT Greengrass コアに接続されています。\]](http://docs.aws.amazon.com/ja_jp/greengrass/v1/developerguide/images/gg-get-started-065.5.png)


開始する前に、[Greengrass デバイスセットアップ](quick-start.md)スクリプトを実行するか、[モジュール 1](module1.md) と[モジュール 2](module2.md) を完了します。このモジュールは、2 つのシミュレートされたクライアントデバイスを作成します。他のコンポーネントやデバイスは必要ありません。

このモジュールの所要時間は 30 分未満です。

**Topics**
+ [AWS IoT Greengrass グループにクライアントデバイスを作成する](device-group.md)
+ [サブスクリプションを設定する](config-subs.md)
+ [AWS IoT Device SDK for Python のインストール](IoT-SDK.md)
+ [通信をテストする](test-comms.md)

# AWS IoT Greengrass グループにクライアントデバイスを作成する
<a name="device-group"></a>

このステップでは、Greengrass グループに 2 つのクライアントデバイスを追加します。このプロセスには、デバイスを AWS IoT モノとして登録し、接続を許可する証明書とキーを設定することが含まれます AWS IoT Greengrass。

1. <a name="console-gg-groups"></a> AWS IoT コンソールナビゲーションペインの**「管理**」で **Greengrass デバイス**を展開し、**「グループ (V1)**」を選択します。

1. <a name="group-choose-target-group"></a>ターゲットグループを選択します。

1. <a name="gg-group-add-device"></a>グループの設定ページで、**[Client device]** (クライアントデバイス)、**[Associate]** (アソシエイト) の順に選択します。

1. <a name="gg-group-create-device"></a>**クライアントデバイスをこのグループモーダルに関連付けるで**、**新しい AWS IoT モノを作成する**を選択します。

   新しいタブに **[Create things]** (モノの作成) ページが開きます。

1. <a name="gg-group-create-single-thing"></a>**[Creating things]** (モノを作成する) ページで、**[Create a single thing]** (単一のモノを作成する) を選択し、**[Next]** (次へ) を選択します。

1. **[Specify thing properties]** (モノのプロパティを指定する) ページで、このクライアントデバイスを **HelloWorld\$1Publisher** として登録し、**[Next]** (次へ) を選択します。

1. <a name="gg-group-create-device-configure-certificate"></a>**[Configure device certificate]** (デバイス証明書の設定) ページで **[Next]** (次へ) を選択します。

1. <a name="gg-group-create-device-attach-policy"></a>**[Attach policies to certificate]** (証明書へのポリシーのアタッチ) を選択し、次のいずれかを実行します。
   + クライアントデバイスが必要とする権限をグラントする既存のポリシーを選択し、**[Create thing]** (モノを作成する) を選択します。

     モーダルが開き、デバイスが とコアへの接続に使用する証明書 AWS クラウド とキーをダウンロードできます。
   + クライアントデバイスにアクセス許可を付与する新しいポリシーを作成してアタッチします。以下の操作を実行します。

     1. **[ポリシーを作成]** を選択します。

        **[ポリシーの作成]** ページが新しいタブで開きます。

     1. **[ポリシーの作成]** ページで、次の操作を行います。

        1. **[Policy name]** (ポリシー名) には、**GreengrassV1ClientDevicePolicy** など、ポリシーを説明する名前を入力します。

        1. **[Policy statements]** (ポリシーステートメント) タブの **[Policy document]** (ポリシードキュメント) で、**[JSON]** を選択します。

        1. 次のポリシードキュメントを入力します。このポリシーにより、クライアントデバイスは Greengrass コアを検出し、すべての MQTT トピックで通信できます。このポリシーのアクセスを制限する方法については、「[AWS IoT Greengrassのデバイス認証と認可](device-auth.md)」を参照してください。

------
#### [ JSON ]

****  

           ```
           {
             "Version":"2012-10-17",		 	 	 
             "Statement": [
               {
                 "Effect": "Allow",
                 "Action": [
                   "iot:Publish",
                   "iot:Subscribe",
                   "iot:Connect",
                   "iot:Receive"
                 ],
                 "Resource": [
                   "*"
                 ]
               },
               {
                 "Effect": "Allow",
                 "Action": [
                   "greengrass:*"
                 ],
                 "Resource": [
                   "*"
                 ]
               }
             ]
           }
           ```

------

        1. **[作成]** を選択して、ポリシーを作成します。

     1. **[Attach policies to certificate]** (証明書にポリシーをアタッチ) ページを開き、ブラウザタブに戻ります。以下の操作を実行します。

        1. **[Policies]** (ポリシー) 一覧で、**[GreengrassV1ClientDevicePolicy]** など、作成したポリシーを選択します。

           新しいポリシーが表示されない場合は、更新ボタンを押します。

        1. [**モノを作成する**] を選択します。

           モーダルが開き、デバイスが とコアへの接続に使用する証明書 AWS クラウド とキーをダウンロードできます。

1. <a name="gg-group-create-device-download-certs"></a>**[Download certificates and keys]** (証明書と鍵をダウンロードする) モーダルで、デバイスの証明書をダウンロードします。
**重要**  
**[Done]** (完了) を選択する前に、セキュリティリソースをダウンロードします。

   以下の操作を実行します。

   1. **[デバイス証明書]** で、**[ダウンロード]** を選択してデバイス証明書をダウンロードします。

   1. **[パブリックキーファイル]** で、**[ダウンロード]** を選択して証明書のパブリックキーをダウンロードします。

   1. **[プライベートキーファイル]** で、**[ダウンロード]** を選択して証明書のプライベートキーファイルをダウンロードします。

   1. 「*AWS IoT デベロッパーガイド*」の「[サーバー認証](https://docs.aws.amazon.com/iot/latest/developerguide/server-authentication.html)」を確認して、適切なルート CA 証明書を選択します。Amazon Trust Services (ATS) エンドポイントと ATS ルート CA 証明書の使用をお勧めします。**[ルート CA 証明書]** で、ルート CA 証明書の **[ダウンロード]** を選択します。

   1. **[完了]** をクリックします。

   デバイス証明書とキーのファイル名に含まれる共通の証明書 ID を書き留めます。これは後で必要になります。

1. **[Associate a client device with this group]** (クライアントデバイスをこのグループに関連付る) モーダルを開いたまま、ブラウザタブに戻ります。以下の操作を実行します。

   1. **[AWS IoT モノの名前]** で、作成した **[HelloWorld\$1Publisher]** のモノを選択します。

      モノが表示されない場合は、更新ボタンをクリックします。

   1. **関連付ける** を選択してください。

1. ステップ 3 ～ 10 を繰り返して 2 つめのクライアントデバイスをグループに追加します。

   このクライアントデバイスに **HelloWorld\$1Subscriber** という名前を付けます。お使いのコンピュータにクライアントデバイスの証明書とキーをダウンロードします。ここでも、HelloWorld\$1Subscriber デバイス用の共通の証明書 ID を書き留めます。

   これで Greengrass グループに次の 2 つのクライアントデバイスがあるはずです。
   + HelloWorld\$1Publisher
   + HelloWorld\$1Subscriber

1. これらのクライアントデバイスのセキュリティ認証情報用のフォルダをコンピュータに作成します。証明書とキーをこのフォルダーにコピーします。

# サブスクリプションを設定する
<a name="config-subs"></a>

このステップでは、HelloWorld\$1Publisher クライアントデバイスから HelloWorld\$1Subscriber クライアントデバイスに MQTT メッセージを送信できるようにします。

1. グループの設定ページの **[Subscription]** (サブスクリプション) タブで、**[Add]** (追加) を選択します。

1. **[Create a subscription]** (サブスクリプションの作成) ページで、以下の操作を実行してサブスクリプションを設定します。

   1. **[Source type]** (ソースタイプ) は、**[Client device]** (クライアントデバイス)、**[HelloWorld\$1Publisher]** の順に選択します。

   1. **[Target type]** (ターゲットの選択) で、**[Client device]** (クライアントデバイス)、**[HelloWorld\$1Subscriber]** の順に選択します。

   1. [**トピックのフィルター**] に「**hello/world/pubsub**」と入力します。
**注記**  
前のモジュールからサブスクリプションを削除できます。グループの **[Subscriptions]** (サブスクリプション) ページで削除するサブスクリプションを選び、**[Delete]** (削除) を選択します。

   1. [**Create subscription**] を選択します。

1. <a name="enable-automatic-detection"></a>Greengrass コアが IP アドレスのリストを公開できるように、自動検出が有効になっていることを確認してください。クライアントデバイスはこの情報を使用してコアを検出します。以下の操作を実行します。

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

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

   1. **[Edit IP detector settings]** (IP ディテクター設定の編集) で、**[Automatically detect and override MQTT broker endpoints]** (MQTT ブローカーのエンドポイントを自動的に検出して上書きする)、**[Save]** (保存) の順に選択します。

1. 「[コアデバイスへのクラウド設定のデプロイ](configs-core.md)」の説明に従って Greengrass デーモンが実行されていることを確認します。

1. <a name="console-actions-deploy"></a>グループ設定ページで、**[Deploy]** (デプロイ) を選択します。

デプロイステータスは、ページヘッダーのグループ名の下に表示されます。デプロイの詳細を表示するには、**[Deployments]** (デプロイ) タブを選択します。

# AWS IoT Device SDK for Python のインストール
<a name="IoT-SDK"></a>

クライアントデバイスは、 AWS IoT Device SDK for Python を使用して、 AWS IoT および AWS IoT Greengrass コアデバイスと通信できます (Python プログラミング言語を使用）。要件を含む詳細については、GitHub の AWS IoT Device SDK for Python [ Readme](https://github.com/aws/aws-iot-device-sdk-python) を参照してください。

このステップでは、SDK をインストールし、コンピュータ上のシミュレートされたクライアントデバイスによって使用される `basicDiscovery.py` サンプル関数を取得します。

1. 必要なすべてのコンポーネントとともに SDK をコンピュータにインストールするには、オペレーティングシステムを選択します。

------
#### [ Windows ]

   1. [昇格されたコマンドプロンプト](https://technet.microsoft.com/en-us/library/cc947813(v=ws.10).aspx)を開き、次のコマンドを実行します。

      ```
      python --version
      ```

      バージョン情報が返されない場合や、バージョン番号が 2.7 未満 (Python 2) または 3.3 未満 (Python 3) の場合は、「[Python のダウンロード](https://wiki.python.org/moin/BeginnersGuide/Download)」の手順に従って Python 2.7 以上または Python 3.3 以上をインストールしてください。詳細については、「[Windows で Python を使う](https://docs.python.org/3.6/using/windows.html)」を参照してください。

   1. [AWS IoT Device SDK for Python](https://github.com/aws/aws-iot-device-sdk-python) を `zip` ファイルとしてダウンロードし、コンピュータの適切な場所に展開します。

      `setup.py` ファイルを含む展開された `aws-iot-device-sdk-python-master` フォルダへのファイルパスを書き留めます。次のステップで、このファイルパスは *path-to-SDK-folder* として示されます。

   1. 昇格されたコマンドプロンプトで、次のコマンドを実行します。

      ```
      cd path-to-SDK-folder
      python setup.py install
      ```

------
#### [ macOS ]

   1. ターミナルウィンドウを開いて、次のコマンドを実行します。

      ```
      python --version
      ```

      バージョン情報が返されない場合や、バージョン番号が 2.7 未満 (Python 2) または 3.3 未満 (Python 3) の場合は、「[Python のダウンロード](https://wiki.python.org/moin/BeginnersGuide/Download)」の手順に従って Python 2.7 以上または Python 3.3 以上をインストールしてください。詳細については、「[Macintosh で Python を使う](https://docs.python.org/3/using/mac.html)」を参照してください。

   1. ターミナルウィンドウで、次のコマンドを実行して OpenSSL のバージョンを確認します。

      ```
      python
      >>>import ssl
      >>>print ssl.OPENSSL_VERSION
      ```

      OpenSSL バージョンの値を書き留めておきます。
**注記**  
Python 3 を実行している場合は、**print(ssl.OPENSSL\$1VERSION)** を使用します。

      Python シェルを閉じるには、次のコマンドを実行します。

      ```
      >>>exit()
      ```

      OpenSSL バージョンが 1.0.1 以降である場合、[ステップ c](#step-c-install-python-sdk) に進んでください。そうでない場合は、以下の手順を実行します。

      1. ターミナルウィンドウから、次のコマンドを実行して、コンピュータが Simple Python Version Management を使用しているかどうかを確認します。

        ```
        which pyenv
        ```

      ファイルパスが返された場合、[**Using `pyenv`**] タブを選択します。何も返されない場合、[**Not using`pyenv`**] タブを選択します。

------
#### [ Using pyenv ]

      1. 安定している最新の Python バージョンを確認するには、「[Python Releases for Max OS X](https://www.python.org/downloads/mac-osx/)」 (または同様のページ) を参照してください。次の例で、この値は *latest-Python-version* として示されています。

      1. ターミナルウィンドウから、以下のコマンドを実行します。

         ```
         pyenv install latest-Python-version
         pyenv global latest-Python-version
         ```

         例えば、Python 2 の最新バージョンが 2.7.14 の場合、これらのコマンドは以下のようになります。

         ```
         pyenv install 2.7.14
         pyenv global 2.7.14
         ```

      1. ターミナルウィンドウを閉じてから再度開き、以下のコマンドを実行します。

         ```
         python
         >>>import ssl
         >>>print ssl.OPENSSL_VERSION
         ```

         OpenSSL のバージョンは 1.0.1 以上でなければなりません。バージョンが 1.0.1 未満の場合、更新は失敗します。**pyenv install** コマンドと **pyenv global** コマンドで使用した Python バージョンの値を確認し、もう一度試してください。

      1. 次のコマンドを実行して、Python シェルを終了します。

         ```
          exit()
         ```

------
#### [ Not using pyenv ]

      1. ターミナルウィンドウで、次のコマンドを実行して [brew](https://brew.sh/) がインストールされているかどうかを確認します。

         ```
         which brew
         ```

         ファイルパスが返されない場合、次のようにして `brew` をインストールします。

         ```
         /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
         ```
**注記**  
インストールプロンプトに従います。Xcode コマンドラインツールのダウンロードには多少時間がかかることがあります。

      1. 以下の コマンドを実行します。

         ```
         brew update
         brew install openssl
         brew install python@2
         ```

          AWS IoT Device SDK for Python には、Python 実行可能ファイルでコンパイルされた OpenSSL バージョン 1.0.1 (またはそれ以降) が必要です。**brew install python** コマンドでは、この要件を満たす `python2` 実行可能ファイルがインストールされます。`python2` 実行可能ファイルは、`PATH` 環境変数の一部となっている `/usr/local/bin` ディレクトリにインストールされます。これを確認するには、次のコマンドを実行します。

         ```
         python2 --version
         ```

         `python2` のバージョン情報が提供されている場合は、次のステップに進みます。それ以外の場合は、シェルプロファイルに次の行を付加することにより、`/usr/local/bin` 環境変数に `PATH` パスを追加します。

         ```
         export PATH="/usr/local/bin:$PATH"
         ```

         例えば、`.bash_profile` を使用している場合や、まだシェルプロファイルがない場合、ターミナルウィンドウから以下のコマンドを実行します。

         ```
         echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bash_profile
         ```

         次に、シェルプロファイルに [source](https://en.wikipedia.org/wiki/Source_(command)) を実行し、`python2 --version` によりバージョン情報が提供されることを確認します。例えば、`.bash_profile` を使用する場合、以下のコマンドを実行します。

         ```
         source ~/.bash_profile
         python2 --version
         ```

         `python2` のバージョン情報が返されます。

      1. シェルプロファイルに次の行を追加します。

         ```
         alias python="python2"
         ```

         例えば、`.bash_profile` を使用している場合や、まだシェルプロファイルがない場合、以下のコマンドを実行します。

         ```
         echo 'alias python="python2"' >> ~/.bash_profile
         ```

      1. 次に、シェルプロファイルに [source](https://en.wikipedia.org/wiki/Source_(command)) を実行します。例えば、`.bash_profile` を使用する場合、以下のコマンドを実行します。

         ```
         source ~/.bash_profile
         ```

         **python** コマンドを呼び出すと、必要な OpenSSL バージョンを含む Python 実行可能ファイル (`python2`) が実行されます。

      1. 以下の コマンドを実行します。

         ```
         python
          import ssl
          print ssl.OPENSSL_VERSION
         ```

         OpenSSL のバージョンは 1.0.1 以上でなければなりません。

      1. Python シェルを終了するには、次のコマンドを実行します。

         ```
          exit()
         ```

------

   1. <a name="step-c-install-python-sdk"></a>次のコマンドを実行して、 AWS IoT Device SDK for Python をインストールします。

      ```
      cd ~
      git clone https://github.com/aws/aws-iot-device-sdk-python.git
      cd aws-iot-device-sdk-python
      sudo python setup.py install
      ```

------
#### [ UNIX-like system ]

   1. のターミナルウィンドウから、以下のコマンドを実行します。

      ```
      python --version
      ```

      バージョン情報が返されない場合や、バージョン番号が 2.7 未満 (Python 2) または 3.3 未満 (Python 3) の場合は、「[Python のダウンロード](https://wiki.python.org/moin/BeginnersGuide/Download)」の手順に従って Python 2.7 以上または Python 3.3 以上をインストールしてください。詳細については、「[Unix プラットフォームで Python を使う](https://docs.python.org/3.6/using/unix.html)」を参照してください。

   1. ターミナルで、以下のコマンドを実行して OpenSSL のバージョンを確認します。

      ```
      python
      >>>import ssl
      >>>print ssl.OPENSSL_VERSION
      ```

      OpenSSL バージョンの値を書き留めておきます。
**注記**  
Python 3 を実行している場合は、**print(ssl.OPENSSL\$1VERSION)** を使用します。

      Python シェルを閉じるには、次のコマンドを実行します。

      ```
       exit()
      ```

      OpenSSL バージョンが 1.0.1 以降である場合、次のステップに進んでください。それ以外の場合は、ディストリビューションの OpenSSL を更新するコマンド (`sudo yum update openssl`、`sudo apt-get update` など) を実行します。

      次のコマンドを実行して、OpenSSL のバージョンが 1.0.1 以降であることを確認します。

      ```
      python
      >>>import ssl
      >>>print ssl.OPENSSL_VERSION
      >>>exit()
      ```

   1. 次のコマンドを実行して、 AWS IoT Device SDK for Python をインストールします。

      ```
      cd ~
      git clone https://github.com/aws/aws-iot-device-sdk-python.git
      cd aws-iot-device-sdk-python
      sudo python setup.py install
      ```

------

1.  AWS IoT Device SDK for Python をインストールしたら、 `samples`フォルダに移動して `greengrass`フォルダを開きます。

   このチュートリアルでは、「[AWS IoT Greengrass グループにクライアントデバイスを作成する](device-group.md)」でダウンロードした証明書とキーを使用する `basicDiscovery.py` サンプル関数をコピーします。

1. HelloWorld\$1Publisher および HelloWorld\$1Subscriber デバイスの証明書とキーを含むフォルダに `basicDiscovery.py` をコピーします。

# 通信をテストする
<a name="test-comms"></a>

1. <a name="ping-device"></a>コンピュータと AWS IoT Greengrass コアデバイスが、同じネットワークを使用してインターネットに接続されていることを確認します。

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

      ```
      hostname -I
      ```

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

      ```
      ping IP-address
      ```

      次のような出力は、コンピュータと AWS IoT Greengrass コアデバイス間の通信が成功したことを示します (パケット損失 0%)。  
![\[正常な ping コマンドの出力。\]](http://docs.aws.amazon.com/ja_jp/greengrass/v1/developerguide/images/gg-get-started-075.5.png)
**注記**  
実行中の EC2 インスタンスに ping を実行できない場合は AWS IoT Greengrass、インスタンスのインバウンドセキュリティグループルールで [Echo リクエスト](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-rules-reference.html#sg-rules-ping)メッセージの ICMP トラフィックが許可されていることを確認してください。詳細については、「*Amazon EC2 ユーザーガイド*」の「[セキュリティグループへのルールの追加](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html#adding-security-group-rule)」を参照してください。  
Windows ホストコンピュータでは、セキュリティが強化された Windows ファイアウォールアプリケーションで、インバウンドエコーリクエストを許可するインバウンドルール ([**File and Printer Sharing (Echo Request - ICMPv4-In)**] など) を有効にするか作成することが必要になる場合もあります。

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

   1. <a name="iot-settings"></a>[AWS IoT コンソール](https://console.aws.amazon.com/iot/)のナビゲーションペインから、**[Settings]** (設定) を選択します。

   1. <a name="iot-settings-endpoint"></a>**[Device data endpoint]** (デバイスデータエンドポイント) にある**[Endpoint]** (エンドポイント) の値を書き留めておきます。次の手順では、この値を使用してコマンド内の *AWS\$1IOT\$1ENDPOINT* プレースホルダーを置き換えます。
**注記**  
[エンドポイントが証明書タイプに対応している](gg-core.md#certificate-endpoints)ことを確認してください。

1. コンピュータ ( AWS IoT Greengrass コアデバイスではない) で、2 [つのコマンドライン](https://en.wikipedia.org/wiki/Command-line_interface) (ターミナルまたはコマンドプロンプト) ウィンドウを開きます。1 つのウィンドウは HelloWorld\$1Publisher クライアントデバイスを、もう 1 つは HelloWorld\$1Subscriber クライアントデバイスを表します。

   実行時に、 はエンドポイントの AWS IoT Greengrass コアの場所に関する情報を収集`basicDiscovery.py`しようとします。この情報は、クライアントデバイスがコアを検出して正常に接続すると、保存されます。これで、この先のメッセージとオペレーションがローカル (インターネット接続なし) で実行されるようになります。
**注記**  
MQTT 接続に使用されるクライアント ID は、クライアントデバイスのモノ名と一致する必要があります。`basicDiscovery.py` スクリプトによって、MQTT 接続のクライアント ID が、スクリプト実行時に指定したモノ名に設定されます。  
スクリプトの詳しい使用方法を確認するには、`basicDiscovery.py` ファイルのあるフォルダから次のコマンドを実行してください。  

   ```
   python basicDiscovery.py --help
   ```

1. HelloWorld\$1Publisher クライアントデバイスのウィンドウから、次のコマンドを実行します。
   + *path-to-certs-folder* を、証明書、キー、および `basicDiscovery.py` を含むフォルダへのパスに置き換えます。
   + *AWS\$1IOT\$1ENDPOINT* をエンドポイントに置き換えます。
   + 2 つの *publisherCertId* インスタンスを、HelloWorld\$1Publisher クライアントデバイスのファイル名に含まれるクライアント 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 の検出](#corp-network-manual-detection)を試すことができます。  
![\[発行者の出力のスクリーンショット。\]](http://docs.aws.amazon.com/ja_jp/greengrass/v1/developerguide/images/gg-get-started-076.png)

1. HelloWorld\$1Subscriber クライアントデバイスのウィンドウから、次のコマンドを実行します。
   + *path-to-certs-folder* を、証明書、キー、および `basicDiscovery.py` を含むフォルダへのパスに置き換えます。
   + *AWS\$1IOT\$1ENDPOINT* をエンドポイントに置き換えます。
   + 2 つの *subscriberCertId* インスタンスを、HelloWorld\$1Subscriber クライアントデバイスのファイル名に含まれるクライアント 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}` のような、エントリを含む出力が表示されるはずです。  
![\[受信者の出力のスクリーンショット。\]](http://docs.aws.amazon.com/ja_jp/greengrass/v1/developerguide/images/gg-get-started-077.png)

HelloWorld\$1Publisher ウィンドウを閉じて、メッセージが HelloWorld\$1Subscriber ウィンドウに表示されないようにします。

企業ネットワークでテストを実行すると、コアへの接続を妨げる可能性があります。回避策として、エンドポイントを手動で入力できます。これにより、`basicDiscovery.py`スクリプトは AWS IoT Greengrass コアデバイスの正しい IP アドレスに接続されます。

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

1. <a name="console-gg-groups"></a> AWS IoT コンソールナビゲーションペインの**「管理**」で **Greengrass デバイス**を展開し、**「グループ (V1)**」を選択します。

1. **[Greengrass グループ]** で、目的のグループを選択します。

1. MQTT ブローカーのエンドポイントを手動で管理するようにコアを設定します。以下の操作を実行します。

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

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

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

1. コアの MQTT ブローカーエンドポイントを入力します。以下の操作を実行します。

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

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

   1. **[Add endpoint]** (エンドポイントの追加) を選択し、エンドポイントの値が 1 つだけであることを確認します。この値は、 AWS IoT Greengrass コアデバイスのポート 8883 の IP アドレスエンドポイントである必要があります (例: `192.168.1.4`）。

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