Help us understand the problem. What is going on with this article?

知っ得ハンズオンシリーズ はじめてのIoT AWS IoT Core 参加記 @目黒セントラルスクウェア

はじめに

9/13 (金) 18:00-21:00 知っ得ハンズオン-はじめてのIoT ~AWS IoT Core~に参加しましたので、質問等をメモしました。

プログラム

最初の挨拶

image.png

亀田 治伸(プロダクトマーケティング, エバンジェリスト)さんから趣旨説明。

AWS IoT の日本語チュートリアルは Raspberry Pi に SDK をインストールするところから始まるのでハードルが高いとよく言われる。今日はデバイスはダミーを使用して、IoT Core のハンズオンを実施する。

image.png

AWS IoT には様々な機能があるが、今日は図の真ん中のサービスを使う。
IoT Device Management はデバイスのグループ管理をしてくれる。今まではSDKなどでデバイスを管理するDBを作っておく必要があった。
IoT Device Defender はデバイスの乗っ取りを対策する。

AWS IoT には大きく二つの利用用途がある。

  1. デバイスデータの可視化・故障予知・異常検知
  2. ファームのアップデート・リモート機器制御

AWS IoT を データ収集・配信サービスである Amazon Kinesis と比較してみる。

サービス プロトコル 認証 通信
Amazon Kinesis HTTP 専用ライブラリ データストリーム
AWS IoT HTTP, WebSocket, MQTT 証明書, SigV4, カスタム認証トーク, Cognitoz(MQTTの場合は証明書が必須) 双方向制御

image.png

AWS IoT Core ではQoS0とQoS1をサポート。

証明書の有効期限は2050年。期限が切れるまで長いのでアクセス制御をポリシーで設定する。

このハンズオンではデバイスを用いず、VPS相当のサービスであるAmazon LightsailにAWS Cloud9及びAWS IoT SDKをインストールしてダミーのデバイスプログラムを用意する。Light Sail ではデフォルト VPC のみに VPC Peering の通信が可能。下り通信が1TBまで価格に含まれている(3.5ドル)のでお得。同じことをEC2 でやると 116 ドルくらいかかる。

ハンズオン

ハンズオンは手順書を配布して各自自習、AWSの方が質問等を受け付けるという形式でした。
やったことは下記です。

  • Light Sail でサーバを立て、Cloud9からsshで接続。AWS IoT SDKをインストールしてダミーデバイスのプログラムを実行する。
  • IoT Core を設定し、S3にデータを格納する。
  • Shadowを使ってデバイスの設定を変更する。

下記は自分がした質問です。

S3保存の際のキーについて

S3のキーはyyyymmddの日付をつけられる?UNIXTIMEにしたくない。

AWS IoT の関数を利用すれば可能。
参考:https://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/iot-sql-functions.html

ちなみにキーの設定を下記のようにすれば、yyyyMMddのフォルダに名前がHHmmssのファイルが生成される。

${parse_time("yyyyMMdd", timestamp(), "UTC")}/${parse_time("HHmmss", timestamp(), "UTC")}

image.png

Kinesisの使用について

Kinesisは使用したほうが良い?

S3やDynamoDBに入れるだけのときでもKinesisを使用したほうが良い。

  1. Kinesisでストリーミングデータをバルク加工することで、後ろに控えるLambdaの起動数や処理回数を減らすことができる。
  2. Kinesisはストレージを持っているので、大量データが来た時でもバッファリングすることができ、データのロストを防ぐことができる。
  3. メッセージブローカーとして、サブスクライブ側の好きなタイミングでのデータ配信ができる。

image.png

証明書の運用について

証明書は1デバイス1証明書が良い?

1デバイス1証明書を推奨している。
理想的には、最初に権限が制限された共通の証明書をインストールしておき、その証明書で新しい証明書の発行を実施、各デバイスに別々の証明書をインストールしてデータの送受信を行うようにする。

参考:AWS IoT Coreでブートストラップ証明書を使ったプロビジョニング

おわりに

AWS IoT めっちゃ簡単で楽しかったです。
ただ、ハンズオンではデバイスの管理が大変そうだと感じたので、IoT Device Management を使って管理をできるようにしたいですね。


連携先がめっちゃあってすごい!
image.png

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away