翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Raspberry Pi を準備して MQTT メッセージ通信のデモンストレーションをする
この手順では、AWS IoT と Raspberry Pi にリソースを作成して、 AWS IoT Device Client を使用した MQTT メッセージ通信をデモンストレーションします。
このセクションの手順は次のとおりです。
MQTT 通信をデモンストレーションするための証明書ファイルを作成する
この手順では、このデモのデバイス証明書ファイルが作成されます。
Raspberry Pi のデバイス証明書ファイルを作成してダウンロードするには
-
ローカルホストコンピュータのターミナルウィンドウで、次のコマンドを入力して、デバイスのデバイス証明書ファイルを作成します。
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" } } -
次のコマンドを入力して、証明書ディレクトリとそのファイルに対するアクセス許可を設定します。
chmod 700 ~/certs/pubsub chmod 644 ~/certs/pubsub/* chmod 600 ~/certs/pubsub/private.pem.key
-
次のコマンドを実行して、証明書のディレクトリおよびファイルに対するアクセス許可を確認します。
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
-
次のコマンドを入力して、ログファイルのディレクトリを作成します。
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 通信をデモンストレーションするためにデバイスをプロビジョニングする
このセクションでは、AWS IoT で Raspberry Pi をプロビジョニングする AWS IoT リソースを作成します。
AWS IoT でデバイスをプロビジョニングするには:
-
ローカルホストコンピュータのターミナルウィンドウで、次のコマンドを入力して、AWS アカウント のデバイスデータエンドポイントのアドレスを取得します。
aws iot describe-endpoint --endpoint-type IoT:Data-ATS
エンドポイントの値は、前のチュートリアルでこのコマンドを実行してから変更されていません。ここでコマンドを再度実行すると、このチュートリアルで使用する設定ファイルにデータエンドポイントの値を簡単に検索して貼り付けることができるようになります。
これまでの手順で入力したコマンドでは次のようなレスポンスが返されます。後で使用できるように、
の値を記録しておきます。endpointAddress
{ "endpointAddress": "
a3qjEXAMPLEffp-ats.iot.us-west-2.amazonaws.com
" } -
次のコマンドを入力して、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" }
-
ターミナルウィンドウで、次の操作を行います。
-
nano
などのテキストエディタを開きます。 -
この JSON ドキュメントをコピーして、開いているテキストエディタに貼り付けます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:
us-west-2:57EXAMPLE833
:client/PubSubTestThing" ] }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-west-2:57EXAMPLE833
:topic/test/dc/pubtopic" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:us-west-2:57EXAMPLE833
:topicfilter/test/dc/subtopic" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:us-west-2:57EXAMPLE833
:topic/test/dc/subtopic" ] } ] } -
エディタでは、ポリシードキュメントの各
Resource
セクションで、us-west-2:57EXAMPLE833
を自身の AWS リージョン 、コロン文字 (:)、12 桁のAWS アカウント 番号に置き換えます。 -
テキストエディタのファイルを
~/policies/pubsub_test_thing_policy.json
として保存します。
-
-
次のコマンドを実行して、前の手順のポリシードキュメントを使用して 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"
-
次のコマンドを実行して、ポリシーをデバイス証明書にアタッチします。
を、このセクション内で前に保存したcertificateArn
certificateArn
値に置き換えます。aws iot attach-policy \ --policy-name "PubSubTestThingPolicy" \ --target "
certificateArn
"成功した場合、このコマンドは何も返しません。
-
次のコマンドを実行して、デバイス証明書を AWS IoT のモノのリソースにアタッチします。
を、このセクション内で前に保存したcertificateArn
certificateArn
値に置き換えます。aws iot attach-thing-principal \ --thing-name "PubSubTestThing" \ --principal "
certificateArn
"成功した場合、このコマンドは何も返しません。
AWS IoT でデバイスを正常にプロビジョニングすると、AWS IoT Device Client 設定ファイルと MQTT テストクライアントを設定して MQTT 通信をデモンストレーションする に進む準備が整います。
AWS IoT Device Client 設定ファイルと MQTT テストクライアントを設定して MQTT 通信をデモンストレーションする
この手順では、AWS IoT Device Client をテストする設定ファイルを作成します。
設定ファイルを作成して AWS IoT Device Client をテストするには
-
Raspberry Pi に接続されているローカルホストコンピュータのターミナルウィンドウで、次の操作を行います。
-
nano
などのテキストエディタを開きます。 -
この 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": "" } } -
エンドポイント
値を AWS IoT Core でデバイスをプロビジョニングする で取得した AWS アカウント のデバイスデータエンドポイントに置き換えます。 -
テキストエディタのファイルを
~/dc-configs/dc-pubsub-config.json
として保存します。 -
次のコマンドを実行して、新しい設定ファイルでアクセス許可を設定します。
chmod 644 ~/dc-configs/dc-pubsub-config.json
-
-
[MQTT test client] (MQTT テストクライアント) を準備して、すべての MQTT メッセージをサブスクライブするには、次の手順を行います。
-
ローカルホストコンピュータの AWS IoT コンソール
で、[MQTT test client] (MQTT テストクライアント) を選択します。 -
[Subscribe to a topic] (トピックをサブスクライブする) タブの [Topic filter] (トピックのフィルター) に「
#
」(単一の # 記号) を入力し、[Subscribe] (サブスクライブ) をクリックします。 -
[Subscriptions] (サブスクリプション) ラベルの下に、「
#
」(単一の # 記号) が表示されることを確認します。
このチュートリアルを進めている間は、ウィンドウで [MQTT test client] (MQTT テストクライアント) を開いたままにします。
-
ファイルを保存し、[MQTT test client] (MQTT テストクライアント) を設定したら、AWS IoT Device Client でのメッセージの発行をデモンストレーションする に進む準備が整いました。