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

Windows もしくは Linux PC、または Mac を AWS IoT デバイスとして使用する

このチュートリアルでは、パーソナルコンピュータを AWS IoT で使用できるように設定します。これらの手順は、Windows および Linux の PC および 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 をダウンロードしてコンピュータにインストールするには
  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.5 以降が必要です。

  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. 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 ディレクトリに作成します。この手順は、ホームとしてインストールするファイルのベースディレクトリを参照しています。

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

    Linux/macOS

    macOS および Linux では、ホームディレクトリは ~ です。

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

    Windows では、 cmdウィンドウでこのコマンドを実行すると、ホームディレクトリパスを見つけることができます。

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

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

    echo $home

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

サンプルアプリケーションを実行するためにシステムを準備するには
  • 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 コンソール[Things] (モノ) リストで、デバイスを表すモノのリソースを検索します。

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

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

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

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

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

    { "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 サービスに接続します。

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

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

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

Publish received on topic test/topic {"message":"Hello world!","sequence":1} Publish received on topic test/topic {"message":"Hello world!","sequence":2} Publish received on topic test/topic {"message":"Hello world!","sequence":3} Publish received on topic test/topic {"message":"Hello world!","sequence":4} Publish received on topic test/topic {"message":"Hello world!","sequence":5} Publish received on topic test/topic {"message":"Hello world!","sequence":6} Publish received on topic test/topic {"message":"Hello world!","sequence":7} Publish received on topic test/topic {"message":"Hello world!","sequence":8} Publish received on topic test/topic {"message":"Hello world!","sequence":9} Publish received on topic test/topic {"message":"Hello world!","sequence":10}

サンプルアプリケーションの実行に問題がある場合は、サンプルアプリケーションに関する問題のトラブルシューティング を確認してください。

コマンドラインに --verbosity Debug パラメータを追加して、サンプルアプリケーションが実行内容に関する詳細なメッセージを表示するようにすることもできます。この情報は、問題の修正に役立ちます。

AWS IoT コンソールでサンプルアプリケーションからのメッセージを表示する

AWS IoT コンソールMQTT クライアントを使用する事で、サンプルアプリケーションメッセージがメッセージブローカーを通過する時にそれらを見る事ができます。

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

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

  3. test/topic のトピックにサブスクライブします。

  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