

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

# Raspberry Pi を準備して MQTT メッセージ通信のデモンストレーションをする
<a name="iot-dc-testconn-provision"></a>

この手順では、 AWS IoT と Raspberry Pi にリソースを作成し、 AWS IoT Device Client を使用した MQTT メッセージ通信を示します。

**Topics**
+ [MQTT 通信をデモンストレーションするための証明書ファイルを作成する](#iot-dc-testconn-provision-certs)
+ [MQTT 通信をデモンストレーションするためにデバイスをプロビジョニングする](#iot-dc-testconn-provision-aws)
+ [MQTT 通信を示すように AWS IoT Device Client 設定ファイルと MQTT テストクライアントを設定する](#iot-dc-testconn-provision-dc-config)

## MQTT 通信をデモンストレーションするための証明書ファイルを作成する
<a name="iot-dc-testconn-provision-certs"></a>

この手順では、このデモのデバイス証明書ファイルが作成されます。

**Raspberry Pi のデバイス証明書ファイルを作成してダウンロードするには**



1. ローカルホストコンピュータのターミナルウィンドウで、次のコマンドを入力して、デバイスのデバイス証明書ファイルを作成します。

   ```
   mkdir ~/certs/pubsub
   aws iot create-keys-and-certificate \
   --set-as-active \
   --certificate-pem-outfile "~/certs/pubsub/device.pem.crt" \
   --public-key-outfile "~/certs/pubsub/public.pem.key" \
   --private-key-outfile "~/certs/pubsub/private.pem.key"
   ```

   このコマンドでは次のようなレスポンスが返されます。後で使用するために `certificateArn` の値を保存します。

   ```
   {
   "certificateArn": "arn:aws:iot:us-west-2:57EXAMPLE833:cert/76e7e4edb3e52f52334be2f387a06145b2aa4c7fcd810f3aea2d92abc227d269",
   "certificateId": "76e7e4edb3e52f5233EXAMPLE7a06145b2aa4c7fcd810f3aea2d92abc227d269",
   "certificatePem": "-----BEGIN CERTIFICATE-----\nMIIDWTCCAkGgAwIBAgI_SHORTENED_FOR_EXAMPLE_Lgn4jfgtS\n-----END CERTIFICATE-----\n",
   "keyPair": {
       "PublicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BA_SHORTENED_FOR_EXAMPLE_ImwIDAQAB\n-----END PUBLIC KEY-----\n",
       "PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQE_SHORTENED_FOR_EXAMPLE_T9RoDiukY\n-----END RSA PRIVATE KEY-----\n"
   }
   }
   ```

1. 次のコマンドを入力して、証明書ディレクトリとそのファイルに対するアクセス許可を設定します。

   ```
   chmod 700 ~/certs/pubsub
   chmod 644 ~/certs/pubsub/*
   chmod 600 ~/certs/pubsub/private.pem.key
   ```

1. 次のコマンドを実行して、証明書のディレクトリおよびファイルに対するアクセス許可を確認します。

   ```
   ls -l ~/certs/pubsub
   ```

   コマンドの出力は、ファイルの日付と時刻が異なることを除いて、ここで表示されるものと同じである必要があります。

   ```
   -rw-r--r-- 1 pi pi 1220 Oct 28 13:02 device.pem.crt
   -rw------- 1 pi pi 1675 Oct 28 13:02 private.pem.key
   -rw-r--r-- 1 pi pi  451 Oct 28 13:02 public.pem.key
   ```

1. 次のコマンドを入力して、ログファイルのディレクトリを作成します。

   ```
   mkdir ~/.aws-iot-device-client
   mkdir ~/.aws-iot-device-client/log
   chmod 745 ~/.aws-iot-device-client/log
   echo " " > ~/.aws-iot-device-client/log/aws-iot-device-client.log
   echo " " > ~/.aws-iot-device-client/log/pubsub_rx_msgs.log
   chmod 600 ~/.aws-iot-device-client/log/*
   ```

## MQTT 通信をデモンストレーションするためにデバイスをプロビジョニングする
<a name="iot-dc-testconn-provision-aws"></a>

このセクションでは、 で Raspberry Pi をプロビジョニングする AWS IoT リソースを作成します AWS IoT。

**AWS IoTでデバイスをプロビジョニングするには:**

1. ローカルホストコンピュータのターミナルウィンドウで、次のコマンドを入力して、 AWS アカウントのデバイスデータエンドポイントのアドレスを取得します。

   ```
   aws iot describe-endpoint --endpoint-type IoT:Data-ATS
   ```

   エンドポイントの値は、前のチュートリアルでこのコマンドを実行してから変更されていません。ここでコマンドを再度実行すると、このチュートリアルで使用する設定ファイルにデータエンドポイントの値を簡単に検索して貼り付けることができるようになります。

   これまでの手順で入力したコマンドでは次のようなレスポンスが返されます。後で使用できるように、`endpointAddress` の値を記録しておきます。

   ```
   {
   "endpointAddress": "a3qjEXAMPLEffp-ats.iot.us-west-2.amazonaws.com"
   }
   ```

1. このコマンドを入力して、Raspberry Pi の新しい AWS IoT モノのリソースを作成します。

   ```
   aws iot create-thing --thing-name "PubSubTestThing"
   ```

    AWS IoT モノのリソースはクラウド内のデバイスの*仮想*表現であるため、 で複数のモノのリソースを作成して AWS IoT 、さまざまな目的に使用できます。これらすべてを同じ物理 IoT デバイスで使用して、デバイスのさまざまな側面を表すことができます。

   このチュートリアルでは、Raspberry Pi を表すために一度に 1 つのモノのリソースのみを使用します。このように、これらのチュートリアルでは、デモの AWS IoT リソースを作成した後、それぞれに特別に作成したリソースを使用してデモに戻って繰り返すことができるように、さまざまなデモを表します。

    AWS IoT モノのリソースが作成された場合、コマンドはこのようなレスポンスを返します。

   ```
   {
   "thingName": "PubSubTestThing",
   "thingArn": "arn:aws:iot:us-west-2:57EXAMPLE833:thing/PubSubTestThing",
   "thingId": "8ea78707-32c3-4f8a-9232-14bEXAMPLEfd"
   }
   ```

1. ターミナルウィンドウで、次の操作を行います。

   1. `nano` などのテキストエディタを開きます。

   1. この JSON ドキュメントをコピーして、開いているテキストエディタに貼り付けます。  
****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:Connect"
                  ],
                  "Resource": [
                      "arn:aws:iot:us-west-2:123456789012:client/PubSubTestThing"
                  ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:Publish"
                  ],
                  "Resource": [
                      "arn:aws:iot:us-west-2:123456789012:topic/test/dc/pubtopic"
                  ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:Subscribe"
                  ],
                  "Resource": [
                      "arn:aws:iot:us-west-2:123456789012:topicfilter/test/dc/subtopic"
                  ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "iot:Receive"
                  ],
                  "Resource": [
                      "arn:aws:iot:us-west-2:123456789012:topic/test/dc/subtopic"
                  ]
              }
          ]
      }
      ```

   1. エディタで、ポリシードキュメントの各`Resource`セクションで、*us-west-2:57EXAMPLE833* を 、コロン文字 (:) AWS リージョン、および 12 桁の AWS アカウント 数字に置き換えます。

   1. テキストエディタのファイルを **\$1/policies/pubsub\$1test\$1thing\$1policy.json** として保存します。

1. このコマンドを実行して、前のステップのポリシードキュメントを使用して AWS IoT ポリシーを作成します。

   ```
   aws iot create-policy \
   --policy-name "PubSubTestThingPolicy" \
   --policy-document "file://~/policies/pubsub_test_thing_policy.json"
   ```

   ポリシーが作成されると、コマンドは次のようなレスポンスを返します。

   ```
   {
                                       "policyName": "PubSubTestThingPolicy",
                                       "policyArn": "arn:aws:iot:us-west-2:57EXAMPLE833:policy/PubSubTestThingPolicy",
                                       "policyDocument": "{\n\"Version\": \"2012-10-17\",		 	 	 \n\"Statement\": [\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Connect\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:client/PubSubTestThing\"\n]\n},\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Publish\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/pubtopic\"\n]\n},\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Subscribe\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:topicfilter/test/dc/subtopic\"\n]\n},\n{\n\"Effect\": \"Allow\",\n\"Action\": [\n\"iot:Receive\"\n],\n\"Resource\": [\n\"arn:aws:iot:us-west-2:57EXAMPLE833:topic/test/dc/*\"\n]\n}\n]\n}\n",
                                       "policyVersionId": "1"
                                       }
   ```

1. 次のコマンドを実行して、ポリシーをデバイス証明書にアタッチします。`certificateArn` を、このセクション内で前に保存した `certificateArn` 値に置き換えます。

   ```
   aws iot attach-policy \
   --policy-name "PubSubTestThingPolicy" \
   --target "certificateArn"
   ```

   成功した場合、このコマンドは何も返しません。

1. 次のコマンドを実行して、デバイス証明書を AWS IoT のモノのリソースにアタッチします。`certificateArn` を、このセクション内で前に保存した `certificateArn` 値に置き換えます。

   ```
   aws iot attach-thing-principal \
   --thing-name "PubSubTestThing" \
   --principal "certificateArn"
   ```

   成功した場合、このコマンドは何も返しません。

でデバイスを正常にプロビジョニングしたら AWS IoT、 に進む準備が整います[MQTT 通信を示すように AWS IoT Device Client 設定ファイルと MQTT テストクライアントを設定する](#iot-dc-testconn-provision-dc-config)。

## MQTT 通信を示すように AWS IoT Device Client 設定ファイルと MQTT テストクライアントを設定する
<a name="iot-dc-testconn-provision-dc-config"></a>

この手順では、 AWS IoT Device Client をテストするための設定ファイルを作成します。

**AWS IoT Device Client をテストする設定ファイルを作成するには**

1. Raspberry Pi に接続されているローカルホストコンピュータのターミナルウィンドウで、次の操作を行います。

   1. `nano` などのテキストエディタを開きます。

   1. この JSON ドキュメントをコピーして、開いているテキストエディタに貼り付けます。

      ```
      {
        "endpoint": "a3qEXAMPLEaffp-ats.iot.us-west-2.amazonaws.com",
        "cert": "~/certs/pubsub/device.pem.crt",
        "key": "~/certs/pubsub/private.pem.key",
        "root-ca": "~/certs/AmazonRootCA1.pem",
        "thing-name": "PubSubTestThing",
        "logging": {
          "enable-sdk-logging": true,
          "level": "DEBUG",
          "type": "STDOUT",
          "file": ""
        },
        "jobs": {
          "enabled": false,
          "handler-directory": ""
        },
        "tunneling": {
          "enabled": false
        },
        "device-defender": {
          "enabled": false,
          "interval": 300
        },
        "fleet-provisioning": {
          "enabled": false,
          "template-name": "",
          "template-parameters": "",
          "csr-file": "",
          "device-key": ""
        },
        "samples": {
          "pub-sub": {
            "enabled": true,
            "publish-topic": "test/dc/pubtopic",
            "publish-file": "",
            "subscribe-topic": "test/dc/subtopic",
            "subscribe-file": "~/.aws-iot-device-client/log/pubsub_rx_msgs.log"
          }
        },
        "config-shadow": {
          "enabled": false
        },
        "sample-shadow": {
          "enabled": false,
          "shadow-name": "",
          "shadow-input-file": "",
          "shadow-output-file": ""
        }
      }
      ```

   1. *エンドポイント*値を、「」で見つけ AWS アカウント た のデバイスデータエンドポイントに置き換えます[でデバイスをプロビジョニングする AWS IoT Core](iot-dc-install-provision.md#iot-dc-install-dc-provision)。

   1. テキストエディタのファイルを **\$1/dc-configs/dc-pubsub-config.json** として保存します。

   1. 次のコマンドを実行して、新しい設定ファイルでアクセス許可を設定します。

      ```
      chmod 644 ~/dc-configs/dc-pubsub-config.json
      ```

1. **[MQTT test client]** (MQTT テストクライアント) を準備して、すべての MQTT メッセージをサブスクライブするには、次の手順を行います。

   1. ローカルホストコンピュータの [AWS IoT コンソール](https://console.aws.amazon.com//iot/home#/test)で、**[MQTT test client]** (MQTT テストクライアント) を選択します。

   1. **[Subscribe to a topic]** (トピックをサブスクライブする) タブの **[Topic filter]** (トピックのフィルター) に「**\$1**」(単一の \$1 記号) を入力し、**[Subscribe]** (サブスクライブ) をクリックします。

   1. **[Subscriptions]** (サブスクリプション) ラベルの下に、「**\$1**」(単一の \$1 記号) が表示されることを確認します。

   このチュートリアルを進めている間は、ウィンドウで **[MQTT test client]** (MQTT テストクライアント) を開いたままにします。

ファイルを保存し、**[MQTT test client]** (MQTT テストクライアント) を設定したら、[AWS IoT Device Client を使用したメッセージの発行のデモンストレーション](iot-dc-testconn-publish.md) に進む準備が整いました。