【AWS Summit Tokyo直前】AWS Summit Sydneyセッション – Developing Connected Applications with AWS IoT レポート

2016.06.01

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、せーのです。今日はいよいよ本日より始まりました「AWS Summit Tokyo 2016」をより楽しむために、先駆けて世界各地で行われているAWS Summitからオーストラリアで行われた「AWS Summit Sydney 2016」のIoTセッション「Developing Connected Applications with AWS IoT」をレポートしたいと思います。

資料

今回のセッションはAWSのSolution ArchitectのAdam Larter氏のセッションとなります。資料は以下のリンクとなっております。

スライド

http://www.slideshare.net/AmazonWebServices/developing-connected-applications-with-aws-iot-technical-301

レポート

Patterns for IoT on AWS

Broadcast Pattern

devappwithawsiot1

トピックに対して複数のサブスクライバを登録させておいて、あるサービスからのパブリッシュにて複数のサービスにデータを伝播させる。
上の例ではお天気サービスから天気や温度、湿度をトピック(au/sydney/weather)にパブリッシュすると、そのトピックをサブスクライブしていた車の各機能にデータを渡して処理をする(天気が悪ければヘッドライトをつける、等)。

Point to Point

devappwithawsiot2

一つのパブリッシュに対して一つのサブスクライバが動いて処理をするパターン。
上の例ではアプリの操作によって電子ポットのアプリを操作する。

Fan Out Notification Pattern

devappwithawsiot3

トピック名に一定のパターンを持たせることで一定の通知アルゴリズムにて複数のThingsを管理する。
上の例ではトピック名を"SN/[シリアルナンバー]/repair"とすることで、各パーツの修理状況に応じた対応を一律で行う。

Aggregator Pattern

devappwithawsiot4

様々なデバイスを一旦ハブに集積させてからクラウドに配信する。
上の例では電子ポット、トースター、電球等の家電データをスマートハブに集めてAWS IoTにパブリッシュしている。ポットのお湯が湧いた、トースターのパンが焼けた、等のアラートがモバイルに飛ぶ一方でモバイルからもAWS Shadowsを使って家電を操作する。

Amazon Cognito Security Architecture

devappwithawsiot5

AWS IoTのセキュリティは

  • X.509証明
  • SigV4
  • Amazon CognitoにてSigV4リクエストを単純化する

という3種類がある。一般的にデバイスからの接続にはX.509ベースの証明書による認証、ブラウザからWeb socketsを使ってアクセスする際にはSigV4を使って認証を行う。CognitoはSDKを使用してAWSクレデンシャルを取得する。AWS IoTポリシーは証明書かCognito IdentityをPrincipalとしてアタッチできる。

上のアーキテクチャ例ではFacebookやTwitter、また新しく発表された「User Pool」を使用して認証すると、一時キーを使ってAWS IoTにアクセスすることができる。

Smart Hub Appliance System

概要

  • スマートハブには証明書や秘密鍵がプレインストールされている。
  • ユーザーはスマートハブへの独自システムを使ってログイン、操作する
  • スマートハブはスマートアプライアンスを自動的に検出する
  • スマートハブはスマートアプライアンスから送られるデータを収集し、webポータルに投げる
  • メーカーはメンテナンスやアップデートの為にスマートハブ群の情報を参照することができる必要がある

スマートハブを登録しようとするとシークレットコードが表示され、それをブラウザから打ち込ませる。

devappwithawsiot6

ブラウザからのデータはAPI Gatewayを通りLambdaに流れる。LambdaからIoT ShadowsとDynamoDBに格納される。

Creating Applications using AWS IoT, Amazon Cognito, AWS Lambda and Amazon API Gateway

これまでのアーキテクチャをAWS IoT以前ならこのように組んだ。

devappwithawsiot7

Kinesisに流すには重たいプロトコルを使用しなければならず、KinesisやSQSに繋げるのにクレデンシャルが必要。SQSでコントロールを把握、操作するにはポーリングしなければならなかった。

devappwithawsiot8

AWS IoTが入ることでプロトコルはMQTTになり、他サービスもポーリングする必要がなくなった。

devappwithawsiot9

レスポンス部もWebSocketを使用してダッシュボードに、Rule Engine(Shadows)を使用して物理的な反応も行う。

devappwithawsiot10

ソフトウェアはこの様な形になる。

まとめ

いかがでしたでしょうか。ノウハウを集積したような様々なパターンやアーキテクチャは大変勉強になりました。このセッションは人気だったのか6月末に行われるAWS Summit オークランドでも行われるそうです。動画、みたいですねえ。