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 事例
名前 榎並 利晃 えなみ としあき toshiake@amazon.co.jp 役割 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 パビリオン
名前 吉田 英世 よしだ ひでよ hideyy@amazon.co.jp 役割 ソリューションアーキテクト ネットワーク/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 バケットへの書込 DyanmoDB へのデータ追加 更新 SNS トピックまたはエンドポイントへの書込 Kinesis Stream への書込 Elasticsearch への書込 AWS IoT への再パブリッシュ CloudWatch アラーム送信 CloudWatch メトリクスとしてキャプチャ SQS キューへの書込 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 イベントハンドラ DynamoDB RDS Redshift ElasticSearch Service データストア クエリサービス イベントストア Kinesis Stream DynamoDB S3 Lambda DataPipeline Kinesis(KCL) EMR
CQRS の例 書込 デバイス AWS IoT デバイスゲートウェイ AWS IoT ルールエンジン S3 QuickSight Redshift 読込
アーキテクティング実践
デバイスと AWS を接続したい AWS IoT と Kinesis Stream を目的によって使い分ける AWS SDK AWS デバイス SDK AWS IoT デバイスゲートウェイ AWS IoT ルールエンジン MQTTS or HTTPS SSL 証明書 or Sig v4 による認証双方向通信メッセージプロセッシング AWS SDK Kinesis Stream HTTPS Sig v4 による認証単方向通信 ( デバイス >Kinesis) ストリームプロセッシング
Kinesisへ送信する前にデータの前処理をしたい AWS IoTのルールで前処理を実行 Kinesisに渡す前処理 ex.ノイズ除去 タイムスタンプ付与 数値変換処理) MQTTのインタフェースとしても利用
ひとまずセンサーデータを保管しておきたい S3 をデータレイクとして活用ビッグデータサービス群とシームレスな連携が可能 EMR Data Pipeline Kinesis Firehose S3 Redshift QuickSight 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 の連携 ファームウェア 6 ファームウェアを更新 5 ファームウェアを S3 バケットからダウンロード 1 ファームウェアを S3 バケットにアップロード 4 トピックから URL を受信 3Lambda から URL を通知 S3 2PUT のイベントから Lambda を起動 AWS IoT デバイスゲートウェイ Lambda
デバイス管理 AWS IoT デバイスレジストリや DynamoDB を利用 DeviceName LastUpdate Serial # Location device001 2016-06- 02T00:00:00 A12345 room1 デバイス属性 ステータスを更新 (AWS SDK, など ) OR デバイス属性 ステータスを更新 (MQTT) AWS IoT デバイスレジストリ DynamoDB AWS IoT デバイスゲートウェイ AWS IoT ルールエンジン Lambda { "things": [ { "attributes": { serialnumber": 12345678" }, "thingname": "mydevice" } ] }
デバイスからAWSまでを閉域ネットワーク接続例 Direct Connectやパートナー様のサービスを利用 AWS クラウド 3G/LTE 網 AWS IoT AWSサービス群 お客様VPC Direct Connect (専用線) お客様拠点 Lambda RDS
デモンストレーション
デモ構成 Shiny by RSudio AWS SDK AWS IoT デバイスゲートウェイ AWS IoT ルールエンジン Kinesis Stream S3 Lambda Aurora
まとめ IoT を つなげる から データ活用 に AWS でシステムを 構築して データ活用にフォーカスする ソフトウェアアーキテクチャを取り入れることで IoT アーキテクチャを最適化 AWS のマネージドサービスをはビッグデータだけでなく IoT においても強力なツールとなる