この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、せーのです。今日はいよいよ本日より始まりました「AWS Summit Tokyo 2016」をより楽しむために、先駆けて世界各地で行われているAWS Summitからオーストラリアで行われた「AWS Summit Sydney 2016」のIoTセッション「Developing Connected Applications with AWS IoT」をレポートしたいと思います。
資料
今回のセッションはAWSのSolution ArchitectのAdam Larter氏のセッションとなります。資料は以下のリンクとなっております。
スライド
レポート
Patterns for IoT on AWS
Broadcast Pattern
トピックに対して複数のサブスクライバを登録させておいて、あるサービスからのパブリッシュにて複数のサービスにデータを伝播させる。
上の例ではお天気サービスから天気や温度、湿度をトピック(au/sydney/weather)にパブリッシュすると、そのトピックをサブスクライブしていた車の各機能にデータを渡して処理をする(天気が悪ければヘッドライトをつける、等)。
Point to Point
一つのパブリッシュに対して一つのサブスクライバが動いて処理をするパターン。
上の例ではアプリの操作によって電子ポットのアプリを操作する。
Fan Out Notification Pattern
トピック名に一定のパターンを持たせることで一定の通知アルゴリズムにて複数のThingsを管理する。
上の例ではトピック名を"SN/[シリアルナンバー]/repair"とすることで、各パーツの修理状況に応じた対応を一律で行う。
Aggregator Pattern
様々なデバイスを一旦ハブに集積させてからクラウドに配信する。
上の例では電子ポット、トースター、電球等の家電データをスマートハブに集めてAWS IoTにパブリッシュしている。ポットのお湯が湧いた、トースターのパンが焼けた、等のアラートがモバイルに飛ぶ一方でモバイルからもAWS Shadowsを使って家電を操作する。
Amazon Cognito Security Architecture
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ポータルに投げる
- メーカーはメンテナンスやアップデートの為にスマートハブ群の情報を参照することができる必要がある
スマートハブを登録しようとするとシークレットコードが表示され、それをブラウザから打ち込ませる。
ブラウザからのデータはAPI Gatewayを通りLambdaに流れる。LambdaからIoT ShadowsとDynamoDBに格納される。
Creating Applications using AWS IoT, Amazon Cognito, AWS Lambda and Amazon API Gateway
これまでのアーキテクチャをAWS IoT以前ならこのように組んだ。
Kinesisに流すには重たいプロトコルを使用しなければならず、KinesisやSQSに繋げるのにクレデンシャルが必要。SQSでコントロールを把握、操作するにはポーリングしなければならなかった。
AWS IoTが入ることでプロトコルはMQTTになり、他サービスもポーリングする必要がなくなった。
レスポンス部もWebSocketを使用してダッシュボードに、Rule Engine(Shadows)を使用して物理的な反応も行う。
ソフトウェアはこの様な形になる。
まとめ
いかがでしたでしょうか。ノウハウを集積したような様々なパターンやアーキテクチャは大変勉強になりました。このセッションは人気だったのか6月末に行われるAWS Summit オークランドでも行われるそうです。動画、みたいですねえ。