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 Device SDK for Python をコンピュータにインストールします。

Git と Python の最新バージョンをインストールする

この手順では、最新バージョンの 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 をインストールする

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

    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 for Pythonの aws-iot-device-sdk-python-v2/samples ディレクトリにある pubsub.py サンプルスクリプトを実行します。このスクリプトは、デバイスがMQTTライブラリを使用してMQTTメッセージを発行およびサブスクライブする方法を示しています。

pubsub.pyサンプルアプリケーションは、トピック、test/topic をサブスクライブし、そのトピックに対して10 個のメッセージを発行し、メッセージブローカーから受信したメッセージを表示します。

pubsub.py サンプルスクリプトを実行するには、次の情報が必要です。

アプリケーションパラメータ値

Parameter

値がある場所

your-iot-endpoint
  1. AWS IoT コンソールの左のメニューで、[Settings] (設定) を選択します。

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

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

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

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

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

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

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

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

  5. ポリシーJSONは次の例に表示されます。"Resource" 要素で、 を各Resource値の AWS アカウント AWS リージョン と region:accountに置き換えます。

    { "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 コンソールでサンプルアプリケーションからのメッセージを表示する

サンプルアプリケーションのメッセージは、AWS IoT コンソールMQTTテストクライアントを使用してメッセージブローカーを通過するときに確認できます。

サンプルアプリケーションによって発行されたMQTTメッセージを表示するには
  1. 確認クライアントでMQTT AWS IoT MQTTメッセージを表示する。これにより、AWS IoT コンソールMQTTテストクライアントを使用してMQTT、メッセージブローカーを通過するメッセージを表示する方法を学ぶことができます。

  2. AWS IoT コンソールMQTTテストクライアントを開きます。

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

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

    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. 共有サブスクリプションの例を実行するには、MQTT5 共有サブスクリプション で説明されているようにモノのポリシーを設定する必要があります。

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

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

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