AWS による IoT 最新動向とデザインパターン

AWS による IoT
最新動向とデザインパターン
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
TwitterでAWS Summitに参加しよう!
@awscloud_jp
公式アカウント
をフォローしたお客様に
フリクションボールペンをプレゼント!
【配布場所】ロビーや展示会場のコンパニオンが配布中!お気軽にお声かけください。
AWS Black Belt Online Seminarのご案内
AWSJ の Tech メンバーがAWSに関する様々な事を日本語で
紹介・解説する無料のオンラインセミナー
AWSについてもっと勉強したい方にオススメ!
AWS イベント
検索
アジェンダ
1. AWSを活用したIoT事例
2. IoTで利用されるサービス群
3. IoTのアーキテクチャ
4. アーキテクティング実践
5. デモンストレーション
AWSを活用したIoT事例
名前
• 榎並 利晃(えなみ としあき)
• [email protected]
役割
• Mobile / IoT Business Development Manager
好きなAWSのサービス
• AWS IoT
• AWS Lambda / API Gateway
• Mobile Services
様々なところでIoTが実現
車
製造, 物流, サプライ
チェーン
自治体
農業
家電・スマート
ホーム
ヘルスケア
小売
安全運行管理
酪農
農業
スマート家電
AWS IoT
ON!
もうすぐ帰るから
エアコンを
つけておこう!
温度・湿度・照度を定期的に
測定し、AWS経由でアプリに
表示することも可能。
Wi-Fi
Wi-Fiルーター
REX-WFIREX1
IoTの活用
業務改善
イノベーション
•
•
•
•
歩留まり改善
メンテナンスの効率化
遠隔制御
資源の活用
(Condition based maintenance)
IoT
活用
新規ビジネス
イノベーション
• 新コンセプトプロダクト
• データ販売
• コンサルティング
プラットフォーム連携による共創
デバイスの抽象化とデータ連携
プラットフォーム
A
API
プラットフォーム
B
データを価値に変える
収集
収集した
データを
リアルタイム
に基盤に転送
保存
データを
長期的に保存、
検索
分析
活用
大規模データ
を高速に分析
(解析)
分析結果を
人が参照
しやすい形で
提供
IoT パビリオン
名前
•
•
吉田 英世(よしだ ひでよ)
[email protected]
役割
•
•
ソリューションアーキテクト
ネットワーク/IoT担当
経歴
•
•
某ゲーム会社インフラエンジニア
某組込みソフトウェア会社 IoTプラットフォーム開発
好きなAWSのサービス
•
•
•
AWS IoT
Amazon Kinesis
Amazon VPC
IoTで利用されるサービス群
AWS IoT
IoTに必要な機能を簡単にセキュアに利用
セキュアな
双方向通信
ルールベースの
アクション設定
• TLS1.2を利用した
クライアント証明書による認証
• HTTPSとMQTTSを採用
• MQTT pub/subによる双方向
通信
• SQLライクなルールの定義で
メッセージ処理をアクション
が設定
• AWSサービスとのシームレス
な連携
デバイスSDKで
開発も簡単
• AWS IoTの各種機能を
デバイスから利用可能
C-SDK
(Ideal for embedded
OS)
Arduino Library
(Arduino Yun)
JS-SDK
(Ideal for Embedded
Linux Platforms)
Mobile SDK
(Android and iOS)
認証
ルール
エンジン
AWS サービス
----サードパーティ
デバイス
ゲートウェイ
デバイスSDK
シャドウ
レジストリ
AWS IoT API
アプリケーション
AWS IoTと直接連携できるサービスは12!
Lambda関数の実行
Firehoseへの書込
S3バケットへの書込
AWS IoTへの再パブリッシュ
DyanmoDBへのデータ
追加、更新
CloudWatchアラーム送信
SNSトピックまたは
エンドポイントへの書込
CloudWatchメトリクスとして
キャプチャ
Kinesis Streamへの書込
SQSキューへの書込
Elasticsearchへの書込
Machine Learningの
リアルタイム予測API
Amazon Kinesis
Amazon
Kinesis
Streams
Amazon
Kinesis
Firehose
Amazon
Kinesis
Analytics
ストリーミングデータの
プロセッシングや分析用
のカスタム
アプリケーションを構築
大容量のストリーミング
データをS3やRedshiftに
簡単に保存
標準SQLクエリにより
ストリーミングデータを
簡単に分析
AWS Lambda
IoTの各イベントをトリガーにいろいろなコードを実行
OS,キャパシティなど
インフラの管理不要
• コードを書いてLambdaに
アップロードするのみ
• 登録されたコードを自動的に
実行
多様なイベント
に対応
• AWS IoTのルールアクション
として動作可能
• Kinesis Streamのストリーム
もイベントとして登録可能
コンピューティング
使用時間のみの課金
• コードが実行される100msごと、
およびコードがトリガーされた
回数に対して課金
Amazon API Gateway
アプリケーションだけでなくデバイス向けWeb APIの
作成・保護・運用と公開を容易に
RESTfulエンドポイントに必要な
豊富な機能が利用可能
• リクエスト数に応じてスケール
• バックエンドへの負荷を軽減するための
スロットリング
• APIのバージョンを管理
• APIアクティビティのメトリクス取得
Lambdaの利用でサーバレスな
APIを作成
• API呼出し後のアクションでLambdaを
指定することでプログラムの登録のみで
APIを作成
IoTのアーキテクチャ
IoTアーキテクチャの特徴
テレメトリ用途ではビッグデータの入力レイヤーとして扱われるのがほとんど
IoTはテレメトリ+αでデータを価値に変える:
• アプリケーションからデバイスを操作(コマンド)
• 入力データを元にアクションを実行(プロセッシング)
• 過去の出来事を元に未来を予測(コンテキストアウェアネス)
イベント駆動
CQRS(コマンドクエリ分離責務)
永続化ストア
(イベントストア)
書込(コマンド)
コマンドプロセッサ
イベント保存
イベント送信
イベントハンドラ
読込(クエリ)
クエリサービス
アップデート
非同期で
コピー
データ
読み出し
データストア
CQRS(コマンドクエリ分離責務)
イベントストア
書込(コマンド)
コマンドプロセッサ
AWS IoT Rules
Kinesis Stream
Lambda
API Gateway
Kinesis Stream
DynamoDB
S3
イベントハンドラ
読込(クエリ)
DynamoDB
RDS
クエリサービス
Redshift
ElasticSearch Service
データストア
Lambda
DataPipeline
Kinesis(KCL)
EMR
CQRSの例
書込
デバイス
AWS IoT
デバイス
ゲートウェイ
AWS IoT
ルールエンジン
S3
QuickSight
Redshift
読込
アーキテクティング実践
デバイスとAWSを接続したい
AWS IoTとKinesis Streamを目的によって使い分ける
AWS SDK
AWSデバイスSDK
AWS SDK
AWS IoT
AWS IoT
ルールエンジン
デバイスゲートウェイ
Kinesis Stream
MQTTS or HTTPS
SSL証明書 or Sig v4による認証
双方向通信
メッセージプロセッシング
HTTPS
Sig v4による認証
単方向通信(デバイス>Kinesis)
ストリームプロセッシング
Kinesisへ送信する前にデータの前処理をしたい
AWS IoTのルールで前処理を実行
Kinesisに渡す前処理(ex.ノイズ除去、タイムスタンプ付与、数値変換処理)
MQTTのインタフェースとしても利用
ひとまずセンサーデータを保管しておきたい
S3をデータレイクとして活用
ビッグデータサービス群とシームレスな連携が可能
EMR
Data Pipeline
Kinesis Firehose
Redshift QuickSight
S3
AWS IoT
デバイス
ゲートウェイ
AWS IoT
ルールエンジン
Machine Leaning
ビッグデータサービス群
データストアの選択
DynamoDB
ID+タイムスタンプなどの時系列データを
アプリケーションでから参照
アプリケーションでのデータ活用
Redshift
中・長期的な時系列データを
BIツールを利用してアドホックに分析
分析でのデータ活用
S3
汎用的なアーカイブ
堅牢で安価なオブジェクトストレージに
半永久的にファイルデータ保管
Elasticsearch ServiceやEMR上でHBaseなども利用可能
小規模であればRDSも選択
デバイスをリモートで制御したい
MQTTとWebsocketで持続的な
コネクションからのコマンド送受信
Websocket
MQTT(subscribe)
AWS IoT
デバイス
ゲートウェイ
RESTful API
AWS IoT デバイスシャドウ
クライアント証明書をデバイスにインストールしたい
AWS IoTのAPI操作
BYOC
(Bring Your Own Certificates)
プライベートCA
プライベートCA証明書
ロール(証明書発行のみ)
デバイス証明書
CSR
aws iot create-certificate-from-csr
デバイス証明書
AWS IoT
APIエンドポイント
プライベートキー
証明書
AWS IoT
APIエンドポイント
プライベートキー
https://mobile.awsblog.com/post/TxP0ACB3TWZ5XB/Use-Your-Own-Certificate-with-AWS-IoT
デバイスへファームウェアをダウンロードしたい
S3イベント+LambdaとAWS IoTの連携
ファームウェア
⑥ファームウェアを
更新
①ファームウェアを
S3バケットに
アップロード
⑤ファームウェアを
S3バケットからダウンロード
S3
④トピックから
URLを受信
③Lambdaから
URLを通知
AWS IoT
デバイスゲートウェイ
②PUTのイベントから
Lambdaを起動
Lambda
デバイス管理
AWS IoTデバイスレジストリやDynamoDBを利用
DeviceName
LastUpdate
Serial #
Location
device001
2016-0602T00:00:00
A12345
room1
デバイス属性、ステータスを更新(AWS SDK, など)
OR
デバイス属性・ステータスを更新(MQTT)
AWS IoT
DynamoDB
デバイスレジストリ
{
AWS IoT
デバイスゲートウェイ
AWS IoT
ルールエンジン
"things": [
{
"attributes": {
”serialnumber": ”12345678"
},
"thingName": "mydevice"
}
]
Lambda
}
デバイスからAWSまでを閉域ネットワーク接続例
Direct Connectやパートナー様のサービスを利用
AWS クラウド
3G/LTE
網
AWS IoT
AWSサービス群
お客様VPC
Direct Connect
(専用線)
お客様拠点
Lambda
RDS
デモンストレーション
Shiny by RSudio
デモ構成
Lambda
Kinesis
Stream
AWS
SDK
AWS IoT
AWS IoT
デバイス ルールエンジン
ゲートウェイ
S3
Aurora
まとめ
IoTを”つなげる”から”データ活用”に、AWSでシステムを
構築して、データ活用にフォーカスする
ソフトウェアアーキテクチャを取り入れることで
IoTアーキテクチャを最適化
AWSのマネージドサービスをはビッグデータだけでなく
IoTにおいても強力なツールとなる