Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AWS IoTのい・ろ・は
Search
daiki.mori
July 14, 2017
Technology
0
470
AWS IoTのい・ろ・は
event: R3 x SW - IoT x Beer Bash (
https://serverworks.doorkeeper.jp/events/62471
)
daiki.mori
July 14, 2017
Tweet
Share
More Decks by daiki.mori
See All by daiki.mori
サーバーレスアーキテクチャを使って、小さく作って大きくする取り組み
daikimori
0
2.8k
AWS RDK 〜AWS ConfigのカスタムルールをLambdaで書くときに使うツールキット〜
daikimori
0
230
JAWS-UG Osaka ZERO-ETL/jawsug osaka zero-etl
daikimori
0
33
JAWS DAYS 2022/Osaka/プログラムは作ったら終わり︖︖ その後が⼤事なんだよ︕︕/20221008_X-Ray_LambdaPowertools
daikimori
0
83
データを受け取って、データを加工して、データを可視化する直前までのお話 / AWS DATA ETL
daikimori
0
150
[JAWS DAYS 2021] Amazon Connect and Serverless
daikimori
1
160
JAWS-UG Kansai Meetup(2020/11) Amazon Connectの今
daikimori
0
57
Playing in re:Invent
daikimori
0
77
Introduction of Amazon Connect
daikimori
0
24
Other Decks in Technology
See All in Technology
長期間TiDBを使ってきた話 @ 私たちはなぜNewSQLを使うのかTiDB選定5社が語る選定理由と活用LT / Experiences with TiDB Over Time
chibiegg
2
750
0→1開発における技術選定において一番大切なこと
bicstone
1
330
DevOpsDays History and my DevOps story
kawaguti
PRO
8
1.6k
PHPカンファレンス小田原2024
ysknsid25
3
670
少数チームで挑む: SwiftUI, TCA, KMPを用いた 新規動画配信アプリ 「ABEMA Live」の開発について
tomu28
0
550
The CloudCompare project by Dr. Daniel Girardeau-Montaut
kentaitakura
0
510
巨大なテーブルのテーブル定義を無停止で安全に誰でも変更できるようにする / Table-definitions-for-huge-tables-can-be-modified-by-anyone-safely-and-non-disruptively
freee
1
740
Terraformあれやこれ/terraform-this-and-that
emiki
8
630
プラットフォームってつくることより計測することが重要なんじゃないかという話 / Platform Engineering Meetup #8
taishin
0
110
開発生産性向上サービスを作るFindyが自分たちで開発生産性を爆上げした組織づくりの歩み / Findy's path to boosting its own development productivity 2024-04-17
ma3tk
3
350
HEXA OSINT CTF V3 作戦会議
meow_noisy
0
110
TransitGatewayの基礎
toru_kubota
0
230
Featured
See All Featured
Fontdeck: Realign not Redesign
paulrobertlloyd
76
4.9k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
29
6k
[RailsConf 2023] Rails as a piece of cake
palkan
22
3.9k
Design by the Numbers
sachag
274
18k
The World Runs on Bad Software
bkeepers
PRO
61
6.7k
Robots, Beer and Maslow
schacon
PRO
155
7.9k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
18
6.9k
Building Applications with DynamoDB
mza
88
5.6k
How GitHub Uses GitHub to Build GitHub
holman
468
290k
A designer walks into a library…
pauljervisheath
199
23k
Art, The Web, and Tiny UX
lynnandtonic
288
19k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
18
1.7k
Transcript
AWS IoTの 株式会社 サーバーワークス 技術3課 森 ⼤樹 い・ろ・は(仮)
Who am I ? ◦ 株式会社サーバーワークス 技術3課 グッド・ルッキング・エンジニア ◦ 元アプリケーションエンジニア
◦ 呼称:「本物の⼤樹」 →経理課の「元祖 ⼤樹」と対決中 ◦ AWS Lambda(Python) ◦ ⼤阪⽣まれ⼤阪育ちの後厄(お祓い済) • 森 ⼤樹 (2017年01⽉JOIN)
とは l AWSに特化したインテグレーション事業とサービスの提供 l 「クラウドで、世界を、もっと、はたらきやすく」 l 3年連続 APN プレミアコンサルティングパートナー l
550社 3200+プロジェクトの実績 (2017年07⽉現在) l 東京・⼤阪・福岡・仙台・札幌に拠点 l 絶賛、エンジニア・営業・営業アシスタントを募集中
IoT 今回のテーマ
IoT is なに? IoT
IoT is なに? l “Internet of Things”の略
IoT is なに? l “Internet of Things”の略 l モノのインターネット
IoT is なに? l “Internet of Things”の略 l モノのインターネット l
モノ=地球上の何か
IoT is なに? l “Internet of Things”の略 l モノのインターネット l
モノ=地球上の何か l モノの情報をインターネット経由で収集
IoT is なに? l “Internet of Things”の略 l モノのインターネット l
モノ=地球上の何か l モノの情報をインターネット経由で収集 l 収集した情報を分析
IoT is なに? l “Internet of Things”の略 l モノのインターネット l
モノ=地球上の何か l モノの情報をインターネット経由で収集 l 収集した情報を分析 l 分析した情報を活⽤
IoTでできること
IoTでできること l 環境のモニタリング 温度、湿度、気圧、照度、⾳など
IoTでできること l 環境のモニタリング 温度、湿度、気圧、照度、⾳など l 動きのモニタリング 衝撃、振動、落下、移動など
IoTでできること l 環境のモニタリング 温度、湿度、気圧、照度、⾳など l 動きのモニタリング 衝撃、振動、落下、移動など l 位置のモニタリング 存在確認、近接確認、通過確認
IoTでできること 環境 動き 位置 分析 改善 / 活⽤
今⽇のお話 AWS IoTの い・ろ・は
まずは、AWS IoT
まずは、AWS IoT その前に、IoTについて覚える5つのこと
AWS IoTの前に覚えておくこと(その1) l MQTT l Message Queueing Teremetry Transfer プロトコル
l 制約された環境での使⽤を想定 l ネットワークコストが⾼い l 帯域幅が狭い l 信頼性が低い l 低リソースなプロセッサやメモリを持つ組み込み機器
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)
AWS IoTの前に覚えておくこと(その2) l Pub(Publisher)/Sub(Subscriber) l Publisher lデータを発信 l Subscriber lデータを受信(購読)
Ø PublisherとSubscriberは直接通信しない
AWS IoTの前に覚えておくこと(その3) l Broker l データを仲介するところ l PublisherもSubscriberもBrokerと通信 l Subscriberは基本的にBrokerと常時接続
AWS IoTの前に覚えておくこと(その4) l Topic l データを送受信する際につける件名みたいなの l スラッシュ (/)を使うことで階層的に⾒せる Topicの例
Tokyo/RoomA/Temperature Tokyo/RoomA/Humidity Tokyo/RoomB/Temperature Osaka/RoomA/Temperature
AWS IoTの前に覚えておくこと(その4) l Topic l Subscribeする時にTopicをワイルドカード指定可能 l #(以下の階層全部) l Tokyo/#
東京オフィスの全部の部屋のすべての値 l +(その階層全部) l Osaka/+/Temperature ⼤阪オフィスの全部の部屋の気温
AWS IoTの前に覚えておくこと(その5) l QoS (Quality of Service) l ネットワーク上で提供するサービス品質 l
QoSレベル l QoS0 : 最⾼1回(届くかは保証しない) l QoS1 : 必ず1回届くが複数回もありえる l QoS2 : 正確に1回届く l QoSレベルが⾼くなると確認(ACK)が⼊り、通信量増
AWS IoTの前に覚えておくこと 5つのこと MQTT Pub(Publisher) / Sub(Subscriber) Broker Topic QoS(Quality
of Service)
やっと、AWS IoT
AWS IoTとは
AWS IoTとは
AWS IoTとは
AWS IoTとは
AWS IoTとは
AWS IoTとは 認証・インタフェース デバイスレジストリ デバイスシャドウ ルールエンジン
AWS IoTとは
AWS IoTとは 認証、認可・インタフェース データをMQTTかHTTPSでAWSに送れる 認証は証明書、IAM、Cognito デバイスから利⽤する場合、基本は証明書による認証 デバイス向けのSDKも提供されている Embedded C, JavaScript,
Arduino Yun, Java, Python, iOS, Android
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" }] }
AWS IoTとは
AWS IoTとは デバイスレジストリ ManagementConsoleに仮想的なデバイス「Things」を作れる 最⼤50組のKey/ValueをThingに紐付けられる ThingsにJSONを保持させられる(Shadow)
AWS IoTとは
AWS IoTとは デバイスシャドウ Thingsに紐づくJSON MQTT, HTTPS, SDKでアクセス可 Get, Update, Deleteができる
このJSONを通して⾮同期にコミュニケーションを⾏える (MQTTのPublishを受け取れなかった時でも、デバイスシャド ウに残しておけば、後から能動的に取りにいける)
AWS IoTとは デバイスシャドウの2つの属性 ReportedとDesiredの2つの状態(属性)を持つ Reportedはデバイス⽤、Desiredはアプリケーション⽤に⽤意 されている ReportedとDesiredの間に差分がある場合は、その差分が Delta属性としてJSONに付与される 差分が発⽣すると、その旨のメッセージがPublishされる
AWS IoTとは デバイスシャドウのJSON構造
AWS IoTとは デバイスシャドウの注意点 デバイスシャドウはDiffと通知機能を持ったJSON置き場で、そ れ以上の事は⾏わない デバイスシャドウのユースケースとしてデバイスのファーム ウェアアップデートが挙がることが多いが、AWS IoTの機能だ けでできるわけではない AWS
IoTが⽤意しているのは⼿段のみであり、ユーザ側でも多 少作ることが必要になる
AWS IoTとは
AWS IoTとは l ルールエンジン l データのフィルタリングや加⼯を⾏ったり、サービスと連携が できる機能 l 条件を指定するQueryと、連携を指定するActionの2つで構成 される
l QueryはSQL Likeな⽂法で書ける
AWS IoTとは l ルールエンジンのクエリ l SQL⾵ l JSONをパースして、クエリの中でJSON属性にアクセス可能 (データはJSONで送った⽅がいい)
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 }
AWS IoTとは l ルールエンジンのクエリ l 四則演算やTimestampも利⽤可能
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 }
AWS IoTとは l ルールエンジン l アクションで他のAWSサービスとの連携を設定可能 l 指定したサービスにデータを流せる l ⼀つのルールに複数のアクションが設定可能
AWS IoTと聞いて覚えておくこと l 認証、認可・インタフェース l デバイスレジストリ l デバイスシャドウ l ルールエンジン
AWS IoT と 連携できるサービス
AWS IoT と 連携できるサービス Amazon S3
AWS IoT と 連携できるサービス l Amazon S3 l オブジェクトストレージ l
1GBあたり、約3円、耐久性は99.99999999% l 連携できる機能 l AWS IoTで受け取ったデータをS3のオブジェクトとして保存 (1データ:1オブジェクト) l Kinesis Firehoseを経由して利⽤すると複数のデータをまとめて 1ファイルにしてS3に出⼒可能
AWS IoT と 連携できるサービス Amazon S3 Amazon SNS
AWS IoT と 連携できるサービス l Amazon SNS l メールやモバイルなど様々な通知をするサービス l
SNSの通知を起点にアクションを実⾏できるAWSサービスあり l 連携できる機能 l AWS IoTで受け取ったデータをSNSのTopicに対してPublish可能
AWS IoT と 連携できるサービス Amazon S3 Amazon SNS Amazon DynamoDB
AWS IoT と 連携できるサービス l Amazon DynamoDB l NoSQLデータベース l
検索に使えるキーが限られるなど、クセがつぇえ少しあり l 秒間あたりの書き込み、読み込みのキャパシティ設定が必要 l キャパシティによる⾦額は算出しておく必要あり l 連携できる機能 l AWS IoTで受け取ったデータをDynamoDBのテーブルに書き込 み
AWS IoT と 連携できるサービス Amazon S3 Amazon SNS Amazon DynamoDB
AWS Lambda
AWS IoT と 連携できるサービス l AWS Lambda l プログラムの実⾏環境を提供するサービス l
Node.js/Java/Python/C#などが利⽤可能 l プログラムの実⾏時間で課⾦(秒単位) l 連携できる機能 l AWS IoTで受け取ったデータを引数にしてプログラムを実⾏可能
AWS IoT と 連携できるサービス Amazon S3 Amazon SNS Amazon DynamoDB
AWS Lambda Amazon SQS
AWS IoT と 連携できるサービス l Amazon SQS l キューの仕組みを提供してくれるサービス l
連携できる機能 l AWS IoTで受け取ったデータをメッセージとしてキューとして 溜める
AWS IoT と 連携できるサービス Amazon S3 Amazon SNS Amazon DynamoDB
AWS Lambda Amazon SQS Amazon Elasticsearch Service
AWS IoT と 連携できるサービス lAmazon Elasticsearch Service l Elastic社のElasticsearchを利⽤したマネージドサービス l
データの蓄積や検索が可能 l 可視化ツール(kibana)がプリインストールされていてデータを 簡単に可視化可能 l 連携できる機能 l AWS IoTで受け取ったデータをElasticsearchへ lKinesis Firehose経由で登録することも可能
AWS IoT と 連携できるサービス Amazon S3 Amazon SNS Amazon DynamoDB
AWS Lambda Amazon SQS Amazon Elasticsearch Service Amazon Kinesis
AWS IoT と 連携できるサービス l Amazon Kinesis l Amazon Kinesis
Streams l Amazon Kinesis Firehose
AWS IoT と 連携できるサービス l Amazon Kinesis Streams l ⼤規模なストリーミングデータをリアルタイムで処理するサービス
l Input / Output共に⾼いスループット l Inputデータは24時間以内であればいつでも取り出し可能 l 連携できる機能 l AWS IoTで受け取ったデータをKinesis Streamsに流す
AWS IoT と 連携できるサービス l Amazon Kinesis Firehose l ⼤量のデータを効率良くDBなどにロードするサービス
l ストリーミングデータを⼀時的にバッファリングして、 ⼀定間隔で⼀括で登録可能(Bulk Insert) l 連携できる機能 l AWS IoTで受け取ったデータをFirehoseへ流す (FirehoseからS3 / Redshift / Elasticsearch Serviceへも)
AWS IoT と 連携できるサービス Amazon S3 Amazon SNS Amazon DynamoDB
AWS Lambda Amazon SQS Amazon Elasticsearch Service Amazon Kinesis Amazon CloudWatch
AWS IoT と 連携できるサービス l Amazon CloudWatch l AWSリソースを監視するサービス l
独⾃のデータをカスタムメトリクスとして監視可能 l 連携できる機能 lAWS IoTで受け取ったデータを蓄積する l閾値を設けてアラームを設定する (さらにAWSリソースと連携も可能) lグラフ化も可能
AWS IoT と 連携できるサービス AWSが提供するサービスだけじゃない!!
詳しくは... 検 索
AWS IoT と 連携できるサービス
AWS IoT と 連携できるサービス l Salesforce l AWSを基盤として利⽤ l CRM
(顧客管理) や 営業⽀援、データ集計・分析を実施 l 連携できる機能 l Wave Analyticsを使って分析・可視化が可能
AWS IoT と 連携できるサービス の おさらい Amazon S3 Amazon SNS
Amazon DynamoDB AWS Lambda Amazon SQS Amazon Elasticsearch Service Amazon Kinesis Amazon CloudWatch Salesforce
AWSを使ったIoT基盤の構築パターン
IoT基盤の構築パターン l IoTにおけるデータの流れ 1. 集める 2. 加⼯する 3. 溜める 4.
提供する
IoT基盤の構築パターン IoTにおけるデータが流れる例 ूΊΔ Ճ͢Δ ཷΊΔ ఏڙ͢Δ
ूΊΔ Ճ͢Δ ཷΊΔ ఏڙ͢Δ IoT基盤の構築パターン IoTにおけるデータが流れる例 デバイスから AWS IoTに Publish
AWS IoTから Kinesis Firehoseへ Lambdaで データを加⼯ 加⼯されたデー タをKinesis Firehoseへ Kinesis Firehoseから Elasticsearchへ定期的 にINSERT kibanaで 可視化
IoT基盤の構築パターン どんなサービスがあるの? ूΊΔ Ճ͢Δ ཷΊΔ ఏڙ͢Δ
IoT基盤の構築パターン どんなサービスがあるの? ूΊΔ Ճ͢Δ ཷΊΔ ఏڙ͢Δ
IoT基盤の構築パターン どんなサービスがあるの? ूΊΔ Ճ͢Δ ཷΊΔ ఏڙ͢Δ SORACOM Beam : デバイス→SORACOMの次の宛先を指定
SORACOM Funnel : SORACOM経由でクラウドサービスへデータを転送
IoT基盤の構築パターン どんなサービスがあるの? ूΊΔ Ճ͢Δ ཷΊΔ ఏڙ͢Δ それぞれのフェーズにおいて⽤途に応じた サービス選択が不可⽋
IoT基盤の構築パターン 考慮ポイント データの送受信 データの利⽤⽅法
IoT基盤の構築パターン 考慮ポイント データの送受信 頻度 プロトコル ⼀⽅向 or 双⽅向 データの利⽤⽅法
IoT基盤の構築パターン 考慮ポイント データの送受信 頻度 プロトコル ⼀⽅向 or 双⽅向 データの利⽤⽅法 W
h y
IoT基盤の構築パターン 考慮ポイント データの送受信 頻度 プロトコル ⼀⽅向 or 双⽅向 データの利⽤⽅法 Ø選択するサービスが変わる
Ø料⾦が⼤きく変わる W h y
IoT基盤の構築パターン 考慮ポイント データの送受信 頻度 プロトコル ⼀⽅向 or 双⽅向 データの利⽤⽅法 頻度
クエリ
IoT基盤の構築パターン 考慮ポイント データの送受信 頻度 プロトコル ⼀⽅向 or 双⽅向 データの利⽤⽅法 頻度
クエリ W h y
IoT基盤の構築パターン 考慮ポイント データの送受信 頻度 プロトコル ⼀⽅向 or 双⽅向 データの利⽤⽅法 頻度
クエリ Ø溜めるサービスが変わる Øパフォーマンスに影響 Ø操作性に影響 W h y
IoT基盤の構築パターン lパターンを3つ紹介 計測機器等の情報を収集 1. 可視化したい 2. クラウドからデバイスを制御 3. 分析したい
IoT基盤の構築パターン 計測機器から情報収集+可視化 ूΊΔ Ճ͢Δ ཷΊΔ ఏڙ͢Δ Ø プロトコルはHTTPS (http://docs.aws.amazon.com/ja_jp/general/latest/gr/rande.html#fh_region )
Ø 通信はデバイス→クラウドの⼀⽅向のみ Ø 可視化する場合は kibana or ElasticsearchのAPIを呼び出す Ø データの加⼯が必要な場合は、AWS Lambdaを挟む
IoT基盤の構築パターン 計測機器から情報収集+可視化+デバイス制御 ूΊΔ Ճ͢Δ ཷΊΔ ఏڙ͢Δ Ø プロトコルはMQTT(Pub / Sub)
Ø 通信はデバイス⇔クラウドの双⽅向になりリアルタイム制御可能 Ø AWS IoT(ルールエンジンの利⽤)でデータ加⼯やフィルタリングが可能 Ø 可視化する場合は kibana or ElasticsearchのAPIを呼び出す
IoT基盤の構築パターン 計測機器から情報収集+可視化+分析 ूΊΔ Ճ͢Δ ཷΊΔ ఏڙ͢Δ Ø プロトコルはHTTPS or MQTT
Ø デバイスから取得した情報は AWS IoTで集め、Redshiftに格納 Ø BIツールで気象データは売上データを結合して分析
まとめ
AWS IoTの い・ろ・は l AWS IoT l 認証/インタフェース、デバイスレジストリ、 デバイスシャドウ、ルールエンジン l
AWS IoTと連携できるサービス l l AWSを使ったIoT基盤の構築パターン
最後に
サーバーワークスは... l きてくれる⽅を絶賛募集中(※) l エンジニア/営業/営業アシスタントを募集 l 東京/⼤阪/名古屋/福岡 l リモートでの仕事もOK!!w l(※)切腹の強要はされません。ご安⼼ください。
l(※)切腹は代表のギャグですのであしからず。
IoT案件も多数実践中。 お仕事は是⾮、Serverworksへ!!
Thanx.