Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWS IoTのい・ろ・は

AWS IoTのい・ろ・は

event: R3 x SW - IoT x Beer Bash (https://serverworks.doorkeeper.jp/events/62471)

daiki.mori

July 14, 2017
Tweet

More Decks by daiki.mori

Other Decks in Technology

Transcript

  1. Who am I ? ◦ 株式会社サーバーワークス 技術3課 グッド・ルッキング・エンジニア ◦ 元アプリケーションエンジニア

    ◦ 呼称:「本物の⼤樹」 →経理課の「元祖 ⼤樹」と対決中 ◦ AWS Lambda(Python) ◦ ⼤阪⽣まれ⼤阪育ちの後厄(お祓い済) • 森 ⼤樹 (2017年01⽉JOIN)
  2. とは l AWSに特化したインテグレーション事業とサービスの提供 l 「クラウドで、世界を、もっと、はたらきやすく」 l 3年連続 APN プレミアコンサルティングパートナー l

    550社 3200+プロジェクトの実績 (2017年07⽉現在) l 東京・⼤阪・福岡・仙台・札幌に拠点 l 絶賛、エンジニア・営業・営業アシスタントを募集中
  3. IoT is なに? l “Internet of Things”の略 l モノのインターネット l

    モノ=地球上の何か l モノの情報をインターネット経由で収集
  4. IoT is なに? l “Internet of Things”の略 l モノのインターネット l

    モノ=地球上の何か l モノの情報をインターネット経由で収集 l 収集した情報を分析
  5. IoT is なに? l “Internet of Things”の略 l モノのインターネット l

    モノ=地球上の何か l モノの情報をインターネット経由で収集 l 収集した情報を分析 l 分析した情報を活⽤
  6. AWS IoTの前に覚えておくこと(その1) l MQTT l Message Queueing Teremetry Transfer プロトコル

    l 制約された環境での使⽤を想定 l ネットワークコストが⾼い l 帯域幅が狭い l 信頼性が低い l 低リソースなプロセッサやメモリを持つ組み込み機器
  7. AWS IoTの前に覚えておくこと(その1) ー MQTTの特徴 lMQTTの特徴 l ⼩さなヘッダ(最⼩2Byte、HTTPは最⼩50Byte) l Pub/Sub型のプロトコル l

    データはブローカー(仲介者)を経由して通信 l 1対多の配信が可能 l QoS (Quality of Service)の設定が可能 l 電源切れやネットワーク断を想定した機能を保有 l Retain, Will (Last Will and Testament)
  8. AWS IoTの前に覚えておくこと(その4) l Topic l Subscribeする時にTopicをワイルドカード指定可能 l #(以下の階層全部) l Tokyo/#

    東京オフィスの全部の部屋のすべての値 l +(その階層全部) l Osaka/+/Temperature ⼤阪オフィスの全部の部屋の気温
  9. AWS IoTの前に覚えておくこと(その5) l QoS (Quality of Service) l ネットワーク上で提供するサービス品質 l

    QoSレベル l QoS0 : 最⾼1回(届くかは保証しない) l QoS1 : 必ず1回届くが複数回もありえる l QoS2 : 正確に1回届く l QoSレベルが⾼くなると確認(ACK)が⼊り、通信量増
  10. AWS IoTとは 認証、認可・インタフェース IAM PolicyやAWS IoTのPolicyを使って、証明書別、ユーザ 別に実⾏可能な動作を詳細に定義可能 Policyの例 { "Version":

    "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iot:Subscribe", "Resource": “arn:aws:iot:us-east-1:xxxxxxx:topic/toilet" },{ "Effect": "Allow", "Action": "iot:Receive", "Resource": "arn:aws:iot:us-east-1:xxxxxx:topic/toilet" }] }
  11. AWS IoTとは デバイスシャドウ Thingsに紐づくJSON MQTT, HTTPS, SDKでアクセス可 Get, Update, Deleteができる

    このJSONを通して⾮同期にコミュニケーションを⾏える (MQTTのPublishを受け取れなかった時でも、デバイスシャド ウに残しておけば、後から能動的に取りにいける)
  12. AWS IoTとは l ルールエンジンのクエリ l SQL⾵ l SELECT * FROM

    ʻTokyo/RoomA/temperatureʼ WHERE temperature > 30 JSONの属性「temperature」を 参照している この条件がTRUEの時にAction が実⾏される このTopicを受信した時に Queryが実⾏される 想定されるデータ Topic Tokyo/RoomA/temperature Payload { “temperature”: 32 }
  13. AWS IoTとは l ルールエンジンのクエリ l 四則演算やTimestampも利⽤可能 l SELECT (temperature *

    1.8) + 32 as fahrenheit, timestamp() as ts FROM ʻTokyo/RoomA/temperatureʼ WHERE temperature > 30 四則演算で摂⽒を華⽒に変換 タイムスタンプを発⾏ (ミリ秒表記のunixtime) 加⼯されたデータ Topic Tokyo/RoomA/temperature Payload { “temperature”: 32, “fahrenheit”: 89.6, “timestamp”: 1478660309204 }
  14. AWS IoT と 連携できるサービス l Amazon S3 l オブジェクトストレージ l

    1GBあたり、約3円、耐久性は99.99999999% l 連携できる機能 l AWS IoTで受け取ったデータをS3のオブジェクトとして保存 (1データ:1オブジェクト) l Kinesis Firehoseを経由して利⽤すると複数のデータをまとめて 1ファイルにしてS3に出⼒可能
  15. AWS IoT と 連携できるサービス l Amazon SNS l メールやモバイルなど様々な通知をするサービス l

    SNSの通知を起点にアクションを実⾏できるAWSサービスあり l 連携できる機能 l AWS IoTで受け取ったデータをSNSのTopicに対してPublish可能
  16. AWS IoT と 連携できるサービス l Amazon DynamoDB l NoSQLデータベース l

    検索に使えるキーが限られるなど、クセがつぇえ少しあり l 秒間あたりの書き込み、読み込みのキャパシティ設定が必要 l キャパシティによる⾦額は算出しておく必要あり l 連携できる機能 l AWS IoTで受け取ったデータをDynamoDBのテーブルに書き込 み
  17. AWS IoT と 連携できるサービス l AWS Lambda l プログラムの実⾏環境を提供するサービス l

    Node.js/Java/Python/C#などが利⽤可能 l プログラムの実⾏時間で課⾦(秒単位) l 連携できる機能 l AWS IoTで受け取ったデータを引数にしてプログラムを実⾏可能
  18. AWS IoT と 連携できるサービス l Amazon SQS l キューの仕組みを提供してくれるサービス l

    連携できる機能 l AWS IoTで受け取ったデータをメッセージとしてキューとして 溜める
  19. AWS IoT と 連携できるサービス Amazon S3 Amazon SNS Amazon DynamoDB

    AWS Lambda Amazon SQS Amazon Elasticsearch Service
  20. AWS IoT と 連携できるサービス lAmazon Elasticsearch Service l Elastic社のElasticsearchを利⽤したマネージドサービス l

    データの蓄積や検索が可能 l 可視化ツール(kibana)がプリインストールされていてデータを 簡単に可視化可能 l 連携できる機能 l AWS IoTで受け取ったデータをElasticsearchへ lKinesis Firehose経由で登録することも可能
  21. AWS IoT と 連携できるサービス Amazon S3 Amazon SNS Amazon DynamoDB

    AWS Lambda Amazon SQS Amazon Elasticsearch Service Amazon Kinesis
  22. AWS IoT と 連携できるサービス l Amazon Kinesis Streams l ⼤規模なストリーミングデータをリアルタイムで処理するサービス

    l Input / Output共に⾼いスループット l Inputデータは24時間以内であればいつでも取り出し可能 l 連携できる機能 l AWS IoTで受け取ったデータをKinesis Streamsに流す
  23. AWS IoT と 連携できるサービス l Amazon Kinesis Firehose l ⼤量のデータを効率良くDBなどにロードするサービス

    l ストリーミングデータを⼀時的にバッファリングして、 ⼀定間隔で⼀括で登録可能(Bulk Insert) l 連携できる機能 l AWS IoTで受け取ったデータをFirehoseへ流す (FirehoseからS3 / Redshift / Elasticsearch Serviceへも)
  24. AWS IoT と 連携できるサービス Amazon S3 Amazon SNS Amazon DynamoDB

    AWS Lambda Amazon SQS Amazon Elasticsearch Service Amazon Kinesis Amazon CloudWatch
  25. AWS IoT と 連携できるサービス l Amazon CloudWatch l AWSリソースを監視するサービス l

    独⾃のデータをカスタムメトリクスとして監視可能 l 連携できる機能 lAWS IoTで受け取ったデータを蓄積する l閾値を設けてアラームを設定する (さらにAWSリソースと連携も可能) lグラフ化も可能
  26. AWS IoT と 連携できるサービス l Salesforce l AWSを基盤として利⽤ l CRM

    (顧客管理) や 営業⽀援、データ集計・分析を実施 l 連携できる機能 l Wave Analyticsを使って分析・可視化が可能
  27. AWS IoT と 連携できるサービス の おさらい Amazon S3 Amazon SNS

    Amazon DynamoDB AWS Lambda Amazon SQS Amazon Elasticsearch Service Amazon Kinesis Amazon CloudWatch Salesforce
  28. ूΊΔ Ճ޻͢Δ ཷΊΔ ఏڙ͢Δ IoT基盤の構築パターン IoTにおけるデータが流れる例 デバイスから AWS IoTに Publish

    AWS IoTから Kinesis Firehoseへ Lambdaで データを加⼯ 加⼯されたデー タをKinesis Firehoseへ Kinesis Firehoseから Elasticsearchへ定期的 にINSERT kibanaで 可視化
  29. IoT基盤の構築パターン 考慮ポイント データの送受信 頻度 プロトコル ⼀⽅向 or 双⽅向 データの利⽤⽅法 頻度

    クエリ Ø溜めるサービスが変わる Øパフォーマンスに影響 Ø操作性に影響 W h y
  30. IoT基盤の構築パターン 計測機器から情報収集+可視化 ूΊΔ Ճ޻͢Δ ཷΊΔ ఏڙ͢Δ Ø プロトコルはHTTPS (http://docs.aws.amazon.com/ja_jp/general/latest/gr/rande.html#fh_region )

    Ø 通信はデバイス→クラウドの⼀⽅向のみ Ø 可視化する場合は kibana or ElasticsearchのAPIを呼び出す Ø データの加⼯が必要な場合は、AWS Lambdaを挟む
  31. IoT基盤の構築パターン 計測機器から情報収集+可視化+デバイス制御 ूΊΔ Ճ޻͢Δ ཷΊΔ ఏڙ͢Δ Ø プロトコルはMQTT(Pub / Sub)

    Ø 通信はデバイス⇔クラウドの双⽅向になりリアルタイム制御可能 Ø AWS IoT(ルールエンジンの利⽤)でデータ加⼯やフィルタリングが可能 Ø 可視化する場合は kibana or ElasticsearchのAPIを呼び出す
  32. IoT基盤の構築パターン 計測機器から情報収集+可視化+分析 ूΊΔ Ճ޻͢Δ ཷΊΔ ఏڙ͢Δ Ø プロトコルはHTTPS or MQTT

    Ø デバイスから取得した情報は AWS IoTで集め、Redshiftに格納 Ø BIツールで気象データは売上データを結合して分析