AWS IoT Core 初級ハンズオンやってみた(とにかく簡単編)

AWS IoT Core 初級ハンズオンやってみた(とにかく簡単編)
この記事をシェアする

はじめに

こんにちは!スカイアーチHRソリューションズのnakaoです!

今回は、AWS IoT Coreを紹介したいと思います。

「AWS IoT Coreを使ってみたいけど、どこから手を付けたらいいのか分からない、、、」

そんなあなたに!
AWSハンズオンを嚙み砕いて、ここではとにかく簡単に、少ない手順でをモットーに記載していきます!!

やること

今回は、こちらの「AWS IoT Core 初級ハンズオン」を取り組んでみました。
この記事ではAWS IoT Coreとデバイスを接続するまでを紹介していきたいと思います。(下図赤枠部分)
デバイスはCloud9上に仮想デバイスを立ち上げて接続していきます。
物理デバイス(Raspberry Pi)との接続についてはまた別記事で紹介出来ればと思います。

ハンズオン実践

早速ハンズオンを実践していきましょう!

Cloud9のセットアップ

まずは、Cloud9上に仮想デバイスを準備します。
Cloud9をAWSマネジメントコンソールから開いて、環境を作成しましょう。
全てデフォルト設定のまま、作成を実行します。

作成が完了したら環境にアクセスして、Cloud9のターミナルで以下のコマンドを実行しましょう。
AWS IoT Device SDK Python v2をインストールします。

pip3 install --user awsiotsdk

フォルダを作成し、ダミーデバイス用のソースコードをダウンロードします。

mkdir -p ~/environment/dummy_client/certs/
cd ~/environment/dummy_client/
wget https://awsj-iot-handson.s3-ap-northeast-1.amazonaws.com/aws-iot-core-workshop/dummy_client/device_main.py -O device_main.py

Cloud9のセットアップについては以上です。

 IoT Core のセットアップ

次に、IoT Coreのセットアップを行います。
IoT CoreをAWSマネジメントコンソールから開いて、左サイドメニューの下の方にある設定を選択します。
デバイスデータエンドポイントのエンドポイントは後でデバイス側に設定するので控えておきましょう。
まずはログの設定を行います。ログの管理を選択します。

ロールを作成を選択し、ログレベルは情報提供を選択します。
日本語で分かりづらいのですが、情報提供はログレベルINFOのことです。
更新を選択します。

次に、左サイドメニューからポリシーを選択し、ポリシーを作成を選択します。
ポリシーアクションとポリシーリソースは*を選択し、作成を選択します。

次に、左サイドメニューからモノを選択し、モノを作成を選択します。
作成するモノの数は1つのモノを作成を選択した状態で、次へを選択します。

Device Shadowは名前のないシャドウ(クラシック)を選択した状態で、次へを選択します。
このDevice ShadowとはIoT Coreとデバイスの状態をIoT Core側で同期を取るために使うみたいです。

新しい証明書を自動作成(推奨)を選択した状態で、次へを選択します。
デバイス証明書はデバイスとIoT Core間の認証で使うみたいです。

先ほど自動作成したデバイス証明書を、こちらも先ほど作成したポリシーにアタッチします。
ポリシーを選択した状態で、モノを作成を選択します。

証明書とキーをダウンロードというポップアップが表示されます。
デバイス証明書、パブリックキーファイル、プライベートキーファイルをダウンロードして保管しておきましょう。

IoT Coreのセットアップについては以上です。

デバイスの設定

次にデバイスの設定を行います。
最初に作成したCloud9の環境を開き、先ほどダウンロードしたデバイス証明書、プライベートキーファイルをcertsフォルダにアップロードします。

Cloud9 のターミナルで以下のコマンドを実行します。
ルートCA証明書をダウンロードします。

cd ~/environment/dummy_client
wget https://www.amazontrust.com/repository/AmazonRootCA1.pem -O certs/AmazonRootCA1.pem

デバイスの設定については以上です。

デバイスの起動と疎通確認

最後にデバイスの起動と疎通確認を行いましょう!
まずはデバイスを起動します。引き続き、Cloud9 のターミナルで以下のコマンドを実行します。
先ほど作成したモノ名と控えておいたデバイスデータエンドポイントを各自置き換えて実行してください。

コマンドを実行すると、ダミーデバイスは AWS IoT Core へ MQTT(プロトコルの一種) で接続し、5秒おき(デフォルト設定の場合)にメッセージを送信します。

cd ~/environment/dummy_client/
python3 device_main.py --device_name {ご自分の作ったモノ名} --endpoint {AWS IoTのendpoint_url}

コマンド実行後、Cloud9 のターミナルを確認すると以下のような結果が返ってきます。

ダミーデバイスから送信されているトピックを受信できているか、AWS IoT Core側で疎通確認します。
IoT Coreの左サイドメニューからMQTTテストクライアントを選択します。
トピックのフィルターに、先ほどCloud9からコマンド実行後に表示されていたトピックを入力してサブスクライブします。

5秒おき(デフォルト設定の場合)にメッセージが受信できていることを確認できますね!
CloudWatchの方もログが出力されていることが確認できると思います!

おわりに

お疲れ様でした!AWS IoT Coreと仮想デバイスの通信のやり取りを確認できましたね!
今回紹介した「AWS IoT Core 初級ハンズオン」にはまだ続きがあるので、興味があれば是非!

私の記事が少しでも皆様のご参考になれば幸いです!

この記事をシェアする
著者:nakao
IoT、サーバーレスな開発に興味深々。AWSエンジニア。