Windows または Linux の PC または Mac を として使用する AWS IoT デバイス - AWS IoT Core

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

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 をダウンロードしてコンピュータにインストールするには
  1. Git がコンピュータにインストールされているかどうかを確認します。このコマンドをコマンドラインに入力します。

    git --version

    コマンドが Git バージョンを表示する場合は、Git がインストールされており、次のステップに進むことができます。

    コマンドがエラーを表示する場合は、https://git-scm.com/downloadを開いてコンピュータに Git をインストールします。

  2. Python が既にインストールされているかどうかを確認します。このコマンドをコマンドラインに入力します。

    python -V
    注記

    このコマンドがエラー Python was not found を表示する場合、オペレーティングシステムが Python v3.x 実行可能ファイルを Python3 として呼び出していることが原因である可能性があります。その場合は、python のすべてのインスタンスを python3 に置き換えて、このチュートリアルの残りの部分を続行してください。

    コマンドが Python のバージョンを表示する場合、Python は既にインストールされています。このチュートリアルには、Python v3.7 以降が必要です。

  3. Python がインストールされている場合は、このセクションの残りの手順を省略できます。インストールされていない場合は、続行します。

  4. https://www.python.org/downloads/ を開き、コンピュータのインストーラをダウンロードします。

  5. ダウンロードが自動的にインストールを開始しなかった場合は、ダウンロードしたプログラムを実行して Python をインストールします。

  6. Python のインストールを確認します。

    python -V

    コマンドが Python バージョンを表示することを確認します。Python のバージョンが表示されない場合は、再度 Python をダウンロードしてインストールしてください。

  のインストール AWS IoT Device SDK for Python

  をインストールするには AWS IoT コンピュータ上の Device SDK for Python
  1. の v2 をインストールする AWS IoT Device SDK for Python。

    python3 -m pip install awsiotsdk
  2. のクローンを作成する AWS IoT Device SDK for Python リポジトリをホームディレクトリの aws-iot-device-sdk-python-v2 ディレクトリに入力します。この手順は、 としてインストールするファイルのベースディレクトリを参照します。home.

    の実際の場所 home ディレクトリはオペレーティングシステムによって異なります。

    Linux/macOS

    macOS および Linux では、home ディレクトリは です~

    cd ~ git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
    Windows

    Windows では、home cmd ウィンドウでこのコマンドを実行して ディレクトリパスを指定します。

    echo %USERPROFILE% cd %USERPROFILE% git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
    注記

    PowerShell ではなく Windows を使用している場合はcmd.exe、次のコマンドを使用します。

    echo $home

詳細については、『』を参照してください。AWS IoT Device SDK for Python GitHub リポジトリ

サンプルアプリケーションの実行を準備する

サンプルアプリケーションを実行するためにシステムを準備するには
  • certs ディレクトリを作成します。certs でモノのオブジェクトを作成および登録したときに保存したプライベートキー、デバイス証明書、およびルート CA 証明書ファイルを 作成 AWS IoT リソース ディレクトリにコピーします。送信先ディレクトリ内の各ファイルのファイル名は、テーブル内のファイル名と一致する必要があります。

    次のセクションのコマンドは、次の表に示すように、キーおよび証明書ファイルがデバイスに保存されていることを前提としています。

    Linux/macOS

    このコマンドを実行して、certs サブディレクトリを作成します。このサブディレクトリは、サンプルアプリケーションの実行に使用します。

    mkdir ~/certs

    新しいサブディレクトリの、次の表に示す送信先ファイルのパスにファイルをコピーします。

    証明書ファイル名

    ファイル

    ファイルパス

    プライベートキー

    ~/certs/private.pem.key

    デバイス証明書

    ~/certs/device.pem.crt

    ルート CA 証明書

    ~/certs/Amazon-root-CA-1.pem

    このコマンドを実行して、certs ディレクトリ内のファイルを一覧表示し、それらを表に一覧表示されているファイルと比較します。

    ls -l ~/certs
    Windows

    このコマンドを実行して、certs サブディレクトリを作成します。このサブディレクトリは、サンプルアプリケーションの実行に使用します。

    mkdir %USERPROFILE%\certs

    新しいサブディレクトリの、次の表に示す送信先ファイルのパスにファイルをコピーします。

    証明書ファイル名

    ファイル

    ファイルパス

    プライベートキー

    %USERPROFILE%\certs\private.pem.key

    デバイス証明書

    %USERPROFILE%\certs\device.pem.crt

    ルート CA 証明書

    %USERPROFILE%\certs\Amazon-root-CA-1.pem

    このコマンドを実行して、certs ディレクトリ内のファイルを一覧表示し、それらを表に一覧表示されているファイルと比較します。

    dir %USERPROFILE%\certs

ポリシーを設定し、サンプルアプリケーションを実行する

このセクションでは、ポリシーを設定し、 の 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
  1. AWS IoT コンソール の左側のメニューで、設定 を選択します。

  2. [Setting] (設定) ページで、エンドポイントがデバイスデータエンドポイントセクションに表示されます。

- your-iot-endpoint 値の形式は endpoint_id-ats.iot.region.amazonaws.comです。例えば、 ですa3qj468EXAMPLE-ats.iot.us-west-2.amazonaws.com

スクリプトを実行する前に、モノのポリシーが、接続、サブスクライブ、発行、および受信するためのアクセス許可をサンプルスクリプトに提供していることを確認してください。

モノのリソースのポリシードキュメントを検索して確認するには
  1. AWS IoT コンソール のモノのリストで、デバイスを表すモノのリソースを見つけます。

  2. デバイスを表すモノのリソースの [Name] (名前) リンクを選択して、[Thing details] (モノの詳細) ページを開きます。

  3. [Thing details] (モノの詳細) ページの [Certificates] (証明書) タブで、モノのリソースにアタッチされている証明書を選択します。リストに含まれる証明書は 1 つだけにする必要があります。複数の がある場合は、デバイスにファイルがインストールされ、 への接続に使用される証明書を選択します。 AWS IoT Core.

    [Certificate] (証明書) 詳細ページの [Policies] (ポリシー) タブで、証明書にアタッチされているポリシーを選択します。1 つだけにする必要があります。複数のポリシーがある場合は、それぞれについて次の手順を繰り返して、少なくとも 1 つのポリシーで必要なアクセスが許可されていることを確認します。

  4. ポリシーの概要ページで、JSONエディタを検索し、ポリシードキュメントの編集を選択して、必要に応じてポリシードキュメントを確認および編集します。

  5. ポリシーJSONは、次の例に表示されます。"Resource" 要素で、 を の region:accountに置き換えます。 AWS リージョン また、 AWS アカウント 各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-*" ] } ] }
Linux/macOS
Linux/macOS でサンプルスクリプトを実行するには
  1. コマンドラインウィンドウで、これらのコマンドを使用して がSDK作成した~/aws-iot-device-sdk-python-v2/samples/node/pub_subディレクトリに移動します。

    cd ~/aws-iot-device-sdk-python-v2/samples
  2. コマンドラインウィンドウで、your-iot-endpoint 示されているように、このコマンドを実行します。

    python3 pubsub.py --endpoint your-iot-endpoint --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key
Windows
Windows PC でサンプルアプリケーションを実行するには
  1. コマンドラインウィンドウで、 がSDK作成した%USERPROFILE%\aws-iot-device-sdk-python-v2\samplesディレクトリに移動し、これらのコマンドを使用してサンプルアプリケーションをインストールします。

    cd %USERPROFILE%\aws-iot-device-sdk-python-v2\samples
  2. コマンドラインウィンドウで、your-iot-endpoint 示されているように、このコマンドを実行します。

    python3 pubsub.py --endpoint your-iot-endpoint --ca_file %USERPROFILE%\certs\Amazon-root-CA-1.pem --cert %USERPROFILE%\certs\device.pem.crt --key %USERPROFILE%\certs\private.pem.key

サンプルスクリプト:

  1. に接続します。 AWS IoT Core アカウントの 。

  2. メッセージトピックの test/topic をサブスクライブし、そのトピックで受信したメッセージを表示します。

  3. トピック test/topic に 10 個のメッセージを発行します。

  4. 次のような出力を表示します。

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メッセージを表示するには
  1. 確認でMQTTメッセージを表示する AWS IoT MQTT クライアント。これは、 でMQTTテストクライアントを使用する方法を学ぶのに役立ちます。 AWS IoT メッセージブローカーを通過するMQTTメッセージを表示するコンソール

  2. MQTTテストクライアントを開く AWS IoT コンソール

  3. トピックへのサブスクライブ」で、トピック、「テスト/トピック」をサブスクライブします。

  4. コマンドラインウィンドウで、サンプルアプリケーションを再度実行し、 のMQTTクライアント内のメッセージを確認します。 AWS IoT コンソール

    Linux/macOS
    cd ~/aws-iot-device-sdk-python-v2/samples python3 pubsub.py --topic test/topic --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint
    Windows
    cd %USERPROFILE%\aws-iot-device-sdk-python-v2\samples python3 pubsub.py --topic test/topic --ca_file %USERPROFILE%\certs\Amazon-root-CA-1.pem --cert %USERPROFILE%\certs\device.pem.crt --key %USERPROFILE%\certs\private.pem.key --endpoint your-iot-endpoint

の詳細MQTTと方法 AWS IoT Core はプロトコルをサポートします。「」を参照してくださいMQTT

Python で共有サブスクリプションのサンプルを実行する

AWS IoT Core は、3 と 5 の両方の共有サブスクリプションをサポートします。 MQTT MQTT共有サブスクリプションを使用すると、1 つのトピックへのサブスクリプションを複数のクライアントで共有できますが、そのトピックに公開されたメッセージをランダム配信を使って受信できるのは 1 つのクライアントのみです。共有サブスクリプションを使用するには、クライアントで共有サブスクリプションのトピックフィルター: $share/{ShareName}/{TopicFilter} をサブスクライブします。

ポリシーを設定し、共有サブスクリプションのサンプルを実行するには
  1. 共有サブスクリプションの例を実行するには、MQTT「5 共有サブスクリプション」の説明に従ってモノのポリシーを設定する必要があります。

  2. 共有サブスクリプションのサンプルを実行するには、次のコマンドを実行します。

    Linux/macOS
    Linux/macOS でサンプルスクリプトを実行するには
    1. コマンドラインウィンドウで、これらのコマンドを使用して がSDK作成した~/aws-iot-device-sdk-python-v2/samplesディレクトリに移動します。

      cd ~/aws-iot-device-sdk-python-v2/samples
    2. コマンドラインウィンドウで、your-iot-endpoint 示されているように、このコマンドを実行します。

      python3 mqtt5_shared_subscription.py --endpoint your-iot-endpoint --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --group_identifier consumer
    Windows
    Windows PC でサンプルアプリケーションを実行するには
    1. コマンドラインウィンドウで、 がSDK作成した%USERPROFILE%\aws-iot-device-sdk-python-v2\samplesディレクトリに移動し、これらのコマンドを使用してサンプルアプリケーションをインストールします。

      cd %USERPROFILE%\aws-iot-device-sdk-python-v2\samples
    2. コマンドラインウィンドウで、your-iot-endpoint 示されているように、このコマンドを実行します。

      python3 mqtt5_shared_subscription.py --endpoint your-iot-endpoint --ca_file %USERPROFILE%\certs\Amazon-root-CA-1.pem --cert %USERPROFILE%\certs\device.pem.crt --key %USERPROFILE%\certs\private.pem.key --group_identifier consumer
    注記

    オプションとして、必要に応じ、サンプルを実行する際にグループ識別子を指定できます (例: --group_identifier consumer)。グループ識別子を指定しなかった場合、python-sample がデフォルトのグループ識別子です。

  3. コマンドラインの出力は次のようになります。

    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!
  4. MQTTテストクライアントを開く AWS IoT コンソール [トピックをサブスクライブする] で、次のような共有サブスクリプションのトピックをサブスクライブします: $share/consumer/test/topic 必要に応じて、サンプルを実行する際にグループ識別子を指定できます (例: --group_identifier consumer)。グループ識別子を指定しなかった場合、デフォルト値は python-sample です。詳細については、MQTT「5 共有サブスクリプション Python の例」および「 からの共有サブスクリプション」を参照してください。 AWS IoT Core デベロッパーガイド

    コマンドラインウィンドウで、サンプルアプリケーションを再度実行し、 のMQTTテストクライアントでのメッセージの配信を確認します。 AWS IoT コンソールとコマンドライン。

    共有サブスクリプションの出力ページ。