翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Windows または Linux の PC または Mac を として使用する AWS IoT デバイス
このチュートリアルでは、 で使用するパーソナルコンピュータを設定します。 AWS IoT。 これらの手順は、Windows、LinuxPCs、Mac をサポートしています。これを行うには、コンピュータにソフトウェアをインストールする必要があります。コンピュータにソフトウェアをインストールしたくない場合は、すべてのソフトウェアを仮想マシンにインストールする Amazon で仮想デバイスを作成する EC2 を試すことができます。
このチュートリアルでは、次の作業を行います。
パーソナルコンピュータを設定する
このチュートリアルを完了するには、インターネットに接続した Windows もしくは Linux PC または Mac が必要です。
次のステップに進む前に、コンピュータでコマンドラインウィンドウを開くことができることを確認してください。Windows PC で cmd.exe を使用します。Linux PC または Mac では、Terminal を使用します。
Git、Python、および をインストールする AWS IoT Device SDK for Python
このセクションでは、Python と をインストールします。 AWS IoT コンピュータ上の Python SDK用デバイス。
Git と Python の最新バージョンをインストールする
Git と Python をダウンロードしてコンピュータにインストールするには
-
Git がコンピュータにインストールされているかどうかを確認します。このコマンドをコマンドラインに入力します。
git --version
コマンドが Git バージョンを表示する場合は、Git がインストールされており、次のステップに進むことができます。
コマンドがエラーを表示する場合は、
https://git-scm.com/download
を開いてコンピュータに Git をインストールします。 -
Python が既にインストールされているかどうかを確認します。このコマンドをコマンドラインに入力します。
python -V
注記
このコマンドがエラー
Python was not found
を表示する場合、オペレーティングシステムが Python v3.x 実行可能ファイルをPython3
として呼び出していることが原因である可能性があります。その場合は、python
のすべてのインスタンスをpython3
に置き換えて、このチュートリアルの残りの部分を続行してください。コマンドが Python のバージョンを表示する場合、Python は既にインストールされています。このチュートリアルには、Python v3.7 以降が必要です。
-
Python がインストールされている場合は、このセクションの残りの手順を省略できます。インストールされていない場合は、続行します。
-
https://www.python.org/downloads/
を開き、コンピュータのインストーラをダウンロードします。 -
ダウンロードが自動的にインストールを開始しなかった場合は、ダウンロードしたプログラムを実行して Python をインストールします。
-
Python のインストールを確認します。
python -V
コマンドが Python バージョンを表示することを確認します。Python のバージョンが表示されない場合は、再度 Python をダウンロードしてインストールしてください。
のインストール AWS IoT Device SDK for Python
をインストールするには AWS IoT コンピュータ上の Device SDK for Python
-
の v2 をインストールする AWS IoT Device SDK for Python。
python3 -m pip install awsiotsdk
-
のクローンを作成する AWS IoT Device SDK for Python リポジトリをホームディレクトリの aws-iot-device-sdk-python-v2 ディレクトリに入力します。この手順は、 としてインストールするファイルのベースディレクトリを参照します。
home
.の実際の場所
home
ディレクトリはオペレーティングシステムによって異なります。注記
PowerShell ではなく Windows を使用している場合はcmd.exe、次のコマンドを使用します。
echo $home
詳細については、『』を参照してください。AWS IoT
Device SDK for Python GitHub リポジトリ
サンプルアプリケーションの実行を準備する
サンプルアプリケーションを実行するためにシステムを準備するには
-
certs
ディレクトリを作成します。certs
でモノのオブジェクトを作成および登録したときに保存したプライベートキー、デバイス証明書、およびルート CA 証明書ファイルを 作成 AWS IoT リソース ディレクトリにコピーします。送信先ディレクトリ内の各ファイルのファイル名は、テーブル内のファイル名と一致する必要があります。次のセクションのコマンドは、次の表に示すように、キーおよび証明書ファイルがデバイスに保存されていることを前提としています。
ポリシーを設定し、サンプルアプリケーションを実行する
このセクションでは、ポリシーを設定し、 の aws-iot-device-sdk-python-v2/samples
ディレクトリにあるpubsub.py
サンプルスクリプトを実行します。 AWS IoT Device SDK for Python。 このスクリプトは、デバイスが MQTTライブラリを使用してMQTTメッセージを発行およびサブスクライブする方法を示しています。
pubsub.py
サンプルアプリケーションは、トピック、test/topic
をサブスクライブし、そのトピックに対して10 個のメッセージを発行し、メッセージブローカーから受信したメッセージを表示します。
pubsub.py
サンプルスクリプトを実行するには、次の情報が必要です。
アプリケーションパラメータ値 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
値がある場所 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
your-iot-endpoint |
|
- your-iot-endpoint
値の形式は
です。例えば、 ですendpoint_id
-ats.iot.region
.amazonaws.coma3qj468EXAMPLE-ats.iot.us-west-2.amazonaws.com
。
スクリプトを実行する前に、モノのポリシーが、接続、サブスクライブ、発行、および受信するためのアクセス許可をサンプルスクリプトに提供していることを確認してください。
モノのリソースのポリシードキュメントを検索して確認するには
-
AWS IoT コンソール のモノのリスト
で、デバイスを表すモノのリソースを見つけます。 -
デバイスを表すモノのリソースの [Name] (名前) リンクを選択して、[Thing details] (モノの詳細) ページを開きます。
-
[Thing details] (モノの詳細) ページの [Certificates] (証明書) タブで、モノのリソースにアタッチされている証明書を選択します。リストに含まれる証明書は 1 つだけにする必要があります。複数の がある場合は、デバイスにファイルがインストールされ、 への接続に使用される証明書を選択します。 AWS IoT Core.
[Certificate] (証明書) 詳細ページの [Policies] (ポリシー) タブで、証明書にアタッチされているポリシーを選択します。1 つだけにする必要があります。複数のポリシーがある場合は、それぞれについて次の手順を繰り返して、少なくとも 1 つのポリシーで必要なアクセスが許可されていることを確認します。
-
ポリシーの概要ページで、JSONエディタを検索し、ポリシードキュメントの編集を選択して、必要に応じてポリシードキュメントを確認および編集します。
-
ポリシーJSONは、次の例に表示されます。
"Resource"
要素で、 を の
に置き換えます。 AWS リージョン また、 AWS アカウント 各region:account
Resource
値の 。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Receive" ], "Resource": [ "arn:aws:iot:
region:account
:topic/test/topic" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account
:topicfilter/test/topic" ] }, { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:region:account
:client/test-*" ] } ] }
サンプルスクリプト:
-
に接続します。 AWS IoT Core アカウントの 。
-
メッセージトピックの test/topic をサブスクライブし、そのトピックで受信したメッセージを表示します。
-
トピック test/topic に 10 個のメッセージを発行します。
-
次のような出力を表示します。
Connected! Subscribing to topic 'test/topic'... Subscribed with QoS.AT_LEAST_ONCE Sending 10 message(s) Publishing message to topic 'test/topic': Hello World! [1] Received message from topic 'test/topic': b'"Hello World! [1]"' Publishing message to topic 'test/topic': Hello World! [2] Received message from topic 'test/topic': b'"Hello World! [2]"' Publishing message to topic 'test/topic': Hello World! [3] Received message from topic 'test/topic': b'"Hello World! [3]"' Publishing message to topic 'test/topic': Hello World! [4] Received message from topic 'test/topic': b'"Hello World! [4]"' Publishing message to topic 'test/topic': Hello World! [5] Received message from topic 'test/topic': b'"Hello World! [5]"' Publishing message to topic 'test/topic': Hello World! [6] Received message from topic 'test/topic': b'"Hello World! [6]"' Publishing message to topic 'test/topic': Hello World! [7] Received message from topic 'test/topic': b'"Hello World! [7]"' Publishing message to topic 'test/topic': Hello World! [8] Received message from topic 'test/topic': b'"Hello World! [8]"' Publishing message to topic 'test/topic': Hello World! [9] Received message from topic 'test/topic': b'"Hello World! [9]"' Publishing message to topic 'test/topic': Hello World! [10] Received message from topic 'test/topic': b'"Hello World! [10]"' 10 message(s) received. Disconnecting... Disconnected!
サンプルアプリケーションの実行に問題がある場合は、サンプルアプリケーションに関する問題のトラブルシューティング を確認してください。
コマンドラインに --verbosity Debug
パラメータを追加して、サンプルアプリケーションが実行内容に関する詳細なメッセージを表示するようにすることもできます。この情報は、問題の修正に役立ちます。
でサンプルアプリケーションからのメッセージを表示する AWS IoT コンソール
でMQTTテストクライアントを使用して、メッセージブローカーを通過するサンプルアプリケーションのメッセージを確認できます。 AWS IoT コンソール 。
サンプルアプリケーションによって発行されたMQTTメッセージを表示するには
-
確認でMQTTメッセージを表示する AWS IoT MQTT クライアント。これは、 でMQTTテストクライアントを使用する方法を学ぶのに役立ちます。 AWS IoT メッセージブローカーを通過するMQTTメッセージを表示するコンソール。
-
でMQTTテストクライアントを開く AWS IoT コンソール 。
-
「トピックへのサブスクライブ」で、トピック、「テスト/トピック」をサブスクライブします。
-
コマンドラインウィンドウで、サンプルアプリケーションを再度実行し、 のMQTTクライアント内のメッセージを確認します。 AWS IoT コンソール 。
の詳細MQTTと方法 AWS IoT Core はプロトコルをサポートします。「」を参照してくださいMQTT。
Python で共有サブスクリプションのサンプルを実行する
AWS IoT Core は、3 と 5 の両方の共有サブスクリプションをサポートします。 MQTT MQTT共有サブスクリプションを使用すると、1 つのトピックへのサブスクリプションを複数のクライアントで共有できますが、そのトピックに公開されたメッセージをランダム配信を使って受信できるのは 1 つのクライアントのみです。共有サブスクリプションを使用するには、クライアントで共有サブスクリプションのトピックフィルター: $share/{ShareName}/{TopicFilter}
をサブスクライブします。
ポリシーを設定し、共有サブスクリプションのサンプルを実行するには
-
共有サブスクリプションの例を実行するには、MQTT「5 共有サブスクリプション
」の説明に従ってモノのポリシーを設定する必要があります。 -
共有サブスクリプションのサンプルを実行するには、次のコマンドを実行します。
注記
オプションとして、必要に応じ、サンプルを実行する際にグループ識別子を指定できます (例:
--group_identifier consumer
)。グループ識別子を指定しなかった場合、python-sample
がデフォルトのグループ識別子です。 -
コマンドラインの出力は次のようになります。
Publisher]: Lifecycle Connection Success [Publisher]: Connected Subscriber One]: Lifecycle Connection Success [Subscriber One]: Connected Subscriber Two]: Lifecycle Connection Success [Subscriber Two]: Connected [Subscriber One]: Subscribed to topic 'test/topic' in shared subscription group 'consumer'. [Subscriber One]: Full subscribed topic is: '$share/consumer/test/topic' with SubAck code: [<SubackReasonCode.GRANTED_QOS_1: 1>] [Subscriber Two]: Subscribed to topic 'test/topic' in shared subscription group 'consumer'. [Subscriber Two]: Full subscribed topic is: '$share/consumer/test/topic' with SubAck code: [<SubackReasonCode.GRANTED_QOS_1: 1>] [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber Two] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [1]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber One] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [2]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber Two] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [3]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber One] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [4]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber Two] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [5]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber One] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [6]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber Two] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [7]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber One] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [8]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber Two] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [9]"' [Publisher]: Sent publish and got PubAck code: <PubackReasonCode.SUCCESS: 0> [Subscriber One] Received a publish Publish received message on topic: test/topic Message: b'"Hello World! [10]"' [Subscriber One]: Unsubscribed to topic 'test/topic' in shared subscription group 'consumer'. [Subscriber One]: Full unsubscribed topic is: '$share/consumer/test/topic' with UnsubAck code: [<UnsubackReasonCode.SUCCESS: 0>] [Subscriber Two]: Unsubscribed to topic 'test/topic' in shared subscription group 'consumer'. [Subscriber Two]: Full unsubscribed topic is: '$share/consumer/test/topic' with UnsubAck code [<UnsubackReasonCode.SUCCESS: 0>] Publisher]: Lifecycle Disconnected [Publisher]: Lifecycle Stopped [Publisher]: Fully stopped Subscriber One]: Lifecycle Disconnected [Subscriber One]: Lifecycle Stopped [Subscriber One]: Fully stopped Subscriber Two]: Lifecycle Disconnected [Subscriber Two]: Lifecycle Stopped [Subscriber Two]: Fully stopped Complete!
-
でMQTTテストクライアントを開く AWS IoT コンソール 。[トピックをサブスクライブする] で、次のような共有サブスクリプションのトピックをサブスクライブします:
$share/consumer/test/topic
必要に応じて、サンプルを実行する際にグループ識別子を指定できます (例:--group_identifier consumer
)。グループ識別子を指定しなかった場合、デフォルト値はpython-sample
です。詳細については、MQTT「5 共有サブスクリプション Python の例」および「 からの共有サブスクリプション」を参照してください。 AWS IoT Core デベロッパーガイド。 コマンドラインウィンドウで、サンプルアプリケーションを再度実行し、 のMQTTテストクライアントでのメッセージの配信を確認します。 AWS IoT コンソールとコマンドライン。