(レポート) MBL312: AWS IoT Deep Dive #reinvent

2015.10.09

IMG_2558 本日発表された新サービス、AWS IoTのDeep Diveセッションに参加しました。スピーカーはJinesh Variaです。

このセッションでは多岐にわたるAWS IoTの構成要素の中で、Rules EngineDevice Shadowに絞って説明が行われました。

構成要素

  • Device Gateway : powerful broker
    • MQTTと HTTPを受け付ける
      • 物理デバイス間でのfine-grained access controlを行うことが可能
  • Device SDKs
    • 接続、認証、通信を行うためのライブラリ
    • C(for embedded)
    • JS(for Linux)
    • Arduino
    • AWSのハードウェアパートナのデバイスで動作する
  • Rules Engine
    • メッセージをルールに基いて変換する
    • 他のAWSサービスにルーティングする
      • Dynamo
      • Kinesis
      • S3
      • SNS
      • Lambda
      • SQS
    • これらのサービスから、他のAWSサービスへと連携させることが可能(e.g. Kinesis firehose -> Redshift)
  • Device Shadow
    • 物理デバイスとの接続が切れている間にもアプリから接続するためにAWS上に用意された仮想的デバイス
    • デバイスごとにシャドウが発生する
    • 各アプリケーションはシャドウを通信できる
  • Device registry
    • デバイス管理(ID、シリアルナンバー等のメタデータ)

IMG_2562

Rules Engine

  • SQLで記述する変換ルール。以下の構成要素から成る。
    • Name
    • Description
    • SQL Statement
      • Powerful way to aggregate data
      • JSON support
      • 非常に強力な要素。
        • 正規表現を利用した文字列操作
        • 算術演算
        • あらかじめ用意されたヘルパーファンクション
        • 暗号化
        • UUID、タイムスタンプ、乱数など
    • Array of Actions(e.g. Kinesisへのデータ投入)
  • デバイスからデータが送られてきた時にSQLが発行される。
  • SQLの抽出条件に引っかかった時、Array of Actionsで定義されたアクションが実行される。

IMG_2573

  • SQLの基本的なSyntaxはSELECT [data] FROM [topic] WHERE [filter]
  • Select
    • ペイロード内のJSONプロパティ
      • '.', '..', '*'のオペレータが利用可能
    • データ操作のためのfunctionが利用可能
  • From
    • Default is an MQTT topic
    • '+' means there is one more vaccums as our device.
  • Where
    • 通常のSQLで利用するような条件句および四則演算が利用可能
  • Rule EngineはExternal Endpointに接続する。

IMG_2574

ここで、会場で配布されたAWS IoT Buttonを利用してAWS IoT -> Lambda -> Twilioという経路でJenishの奥様に電話をかけるデモを行う。成功し拍手が起きる。

  • AWS IoT + Amazon S3 + Amazon Machine Learningを利用して、IoTから吸い上げたデータを利用したtrainingを行うアーキテクチャの紹介。

IMG_2575

Shadow

  • クラウドに保存された、仮想デバイス(物理デバイスの「影」)。以下の情報が保存される。
    • device state
    • device metadata
      • ユーザで定義が可能。
    • versions
    • clientToken
    • timestamp
    • Shadowには最後にdeviceがAWS IoTと接続した時の状態が保存されている
  • Shadowの動作フローは以下の写真の通り。

IMG_2576

デモ

スライドで例として出されていた掃除機(ルンバ的な)をAWS IoTに接続させ、「照度が一定以下になったら掃除を開始させる」というデモが行われました。なぜかデモがうまく動かず**手でスイッチを入れるという結果でしたが

IMG_2577

照度が一定以下になった時に、Rule Engineで記載されたルールを基にShadowに対して起動する命令を出します。それをShadowから実デバイスに通知する流れで行われます。

まとめ

私自身、IoTという分野にはあまり明るくないのですが、(恐らく)面倒であろうデータ収集後の加工と保存をAWS各種サービスと組み合わせることで利用に対する敷居は非常に下がると思います。いじりがいのあるサービスだと思います!

参考