12
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWS IoT CoreでMQTTのデータをDynamoDBへ受け流す

Last updated at Posted at 2021-02-17

やりたいこと

社内研修の一環でIoTサービスを立ち上げています。
体重計からAWS IoT Coreに重さの情報を送り、それをDynamoDBのテーブルに格納するということをしたいです。

先輩@yuuuに教えていただいた内容を整理します。

実装!

Dynamo DBを作成する

まず、箱を準備します。
スクリーンショット 2021-02-16 13.13.13.png
テーブルが作成できたら、IoT Coreのコンソール画面に移動します。

IoT Coreの証明書を作成する

安全性 > 証明書と進みます。

スクリーンショット 2021-02-16 13.19.44.png
1-click証明書作成を選択します。
有言実行。本当にワンクリックで証明書ができるので、ダウンロードします。
スクリーンショット 2021-02-16 13.21.28.png
その下に「AWS IoTのルート CA をダウンロードする必要があります。」と書いてあるので、素直に従います。

ルート証明書 Root CA

別ページに遷移し、Amazon Root CA 1を開くと、証明書キーがブラウザに表示されるので、全部コピーします。
iotcore_rootca.png

コマンドラインで下記のようにファイルを作成。

terminal
nano ~/Desktop/Root1CA1.pem

そこでキーをペーストしたら、ctr + x => y => Enterで保存します。

IoT Core画面に戻って有効化を押す。

ポリシーの作成とアタッチ

証明書を渡したデバイスに対してIoT Coreへのアクセスを許可する。

スクリーンショット 2021-02-16 17.54.23.png
デフォルトで出てくるARN(Resouce)のままだとうまくいか図。動作確認なので、とりま全部許可する設定の"*"としました。

ポリシーが作成できたら、先ほど作った証明書にポリシーをアタッチします。
スクリーンショット 2021-02-16 17.51.23.png

ACTのルールを書いていく(SQLちっく)

次に。IoT Coreが通信を受け取ったら、なんのアクションをさせるか?のアクション(ACT)を設定していきます。

スクリーンショット 2021-02-16 17.58.54.png
DynamoDB向けのアクションは2つありますが、「DynamoDBテーブルの複数列にメッセージを分割する」の方が細かい設定不要でサクッとできるので、こちらを選択。

以上で、AWS側の設定は終了です!

MQTTBoxで動作確認

それでは、実際にデータをIoT Coreに送って、DynamoDBに転送されるか実験してみます。mockmockを使う手もありますが、まずは簡単に通信が確認できればいいので、MQTTBoxというサービスを使います。mockmockは次回。

スクリーンショット 2021-02-16 17.55.58.png
下記のように設定します。

  • Topic to publish:iot/topic
  • Payload Type:JSONの入っているもの
  • Payload:IoT Coreに送信したいデータ

右上の歯車マークを押して、詳細設定へ。
スクリーンショット 2021-02-17 16.11.29.png
下記のように設定します。

  • Protocol:mqtts / tls
  • CA file:IoT CoreからDLしたRoot CAファイルを添付。
  • Client certificate file:IoT CoreからDLした証明書を添付。
  • Client key file:IoT CoreからDLしたプライベートキーを添付。
  • Hos:AWS画面、IoT Core > 設定にあるカスタムエンドポイントを入れる。

Saveを押してトップに戻ったら、Publishを押してテスト!

DynamoDBにデータが入りました!

inserted_in_dynamodb.png
地味に楽しい!
今回はとりま通信を確認したかったのでこれでOKですが、実際はIoTデバイス2台からIoT Coreに向けてデータが送信されるため、これでは心許ないです。また定期的にデータを送ったり、ランダムな値を送れるようにしてみたいです。そんな時はmockmockなので次回やってみたいと思います。

最後に

これは@yuuuさんからの手ほどきをまとめたものです。大感謝!
もし何かご指摘ありましたら、ぜひよろしくお願い申し上げます。

12
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?