Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Greengrassを使ったIoTのアーキテクチャ
Ryohei Hisamitsu
February 21, 2022
Technology
0
41
Greengrassを使ったIoTのアーキテクチャ
Ryohei Hisamitsu
February 21, 2022
Tweet
Share
More Decks by Ryohei Hisamitsu
See All by Ryohei Hisamitsu
GoのアプリをEKS(Fargate)にデプロイしてみた話
hisami
0
38
ECS Execを使ってFargateにログインしてみた
hisami
0
120
TypeScriptでDIしてみた
hisami
0
320
Other Decks in Technology
See All in Technology
プロダクトマネージャーの役割と育成、評価
middleokada
18
12k
Life Hacker with LINE Bot and GitHub API
line_developers_tw
PRO
0
5.1k
ログラスを支える技術的投資の仕組み / loglass-technical-investment
urmot
9
2k
セキュリティ・キャンプ全国大会2022 企業紹介イベント/seccamp2022-nikkei
nikkei_engineer_recruiting
0
130
ReverseETLでユーザーに価値を届ける基盤を実現した話
hakky
0
360
ぼくらが選んだ次のMySQL 8.0 / MySQL80 Which We Choose
line_developers
PRO
7
3.1k
漫画で使えそうな背景画像をblenderを使って作ってみた!
nokonoko1203
1
330
MySQL v5.7 勉強会/study-mysql-ver-5-7
andpad
0
2.1k
殺虫剤のパラドックスの真実 / The Truth of The Pesticide Paradox
kzsuzuki
1
180
EKS AnywhereとIAM Anywhereを組み合わせてみた
regmarmcem
0
410
ECS Exec を使った ECS の トラブルシューティング
dohara
0
170
DeFiChain Tech Talk - DFI Uniswap Staking, DeFi Options & DeFi Meta Chain
uzyn
0
120
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
35
3k
Code Reviewing Like a Champion
maltzj
506
37k
What’s in a name? Adding method to the madness
productmarketing
11
1.6k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
655
120k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
316
19k
Adopting Sorbet at Scale
ufuk
63
7.6k
The Art of Programming - Codeland 2020
erikaheidi
32
11k
KATA
mclloyd
7
8.9k
4 Signs Your Business is Dying
shpigford
169
20k
Writing Fast Ruby
sferik
612
57k
Done Done
chrislema
174
14k
The Language of Interfaces
destraynor
148
21k
Transcript
Greengrassを使ったIoTのアーキテクチャ 久光遼平 AWS LT会 2022.02.18
自己紹介:久光 遼平(ひさみつ りょうへい) l 自動車業界約6年、IT業界約4年のエンジニア l 大学:Java l 自動車会社:Matlab、C++ l
前職:PHP l NCDC:TypeScriptでの開発、 AWSでのインフラ構築(5日前にSAP資格取れました!) l 趣味 l マラソン:フルマラソン2回、30km大会1回、ハーフマラソン1回 l サッカー 2
今日するお話 l 作ったもの l システム構成 l Greengrassについて l メリット l
設定〜デプロイの大まかな流れ l はまったポイント l 実運用に向けたポイント 3
作ったもの 4 センサーデータ
TVCOFU 71$ システム構成 3%4 "84$MPVE &$4 6TFS $MPVE'SPOU 4 ʢ8FCΞϓϦͷஔʣ
ΤοδσόΠε .255 $PHOJUP (SFFOHSBTT ηϯαʔ &UIFSOFU '51 *P5$PSF "1*(BUFXBZ 4FDSFUT.BOBHFS $MPVE8BUDI -PHT "1*(BUFXBZ "NQMJGZ 今日のお話のメイン センサからのデータを受け取ってクラウドに送信&受信
Greengrassとは? l AWSの機能をエッジデバイスに拡張するサービス l Greengrassを使うことでデバイス上でLambdaを動かせる 6 引用:AWS Black Belt
Greengrassを使用するメリット l MQTTを使ったクラウドへのデータ送信が簡単に作れる l Greengrass用のSDKが用意されています l デプロイの制御が簡単にできる l 複数台のエッジデバイスに数クリックでデプロイできる。更新も簡単。 l
ログの管理がしやすい l CloudWatch Logsにエッジデバイスのログを送付できる (ただし、仕様にクセがあるので後で別途お話します) 7 ΤοδσόΠε .255 (SFFOHSBTT *P5$PSF import ggSdk from "aws-greengrass-core-sdk"; const iotClient = new ggSdk.IotData(); iotClient.publish( { topic, payload }, publishCallback);
設定〜デプロイの大まかな流れ 8 マイコンポーネント (Lambda) の作成 デバイス の設定 コンポーネント のデプロイ
設定〜デプロイの大まかな流れ 9 マイコンポーネント (Lambda) の作成 デバイス の設定 コンポーネント のデプロイ ・Greengrass
Coreのインストールパッケージをダウンロード ・デバイス名などを指定してインストールコマンドを実行 (デバイスの環境変数にAWSの認証情報を保持する必要あり ) インストールコマンド実行 AWSのコンソール上にデバイスが登録される
設定〜デプロイの大まかな流れ 10 マイコンポーネント (Lambda) の作成 デバイス の設定 コンポーネント のデプロイ ・Lambdaの関数名・バージョンを指定
・メモリやタイムアウト時間などを選択
設定〜デプロイの大まかな流れ 11 マイコンポーネント (Lambda) の作成 デバイス の設定 コンポーネント のデプロイ ・AWSで既に用意されているパブリックコンポーネントも存在
(CloudWatch Logsとの連携用など) ・上記の自分で作ったコンポーネントとパブリックコンポーネン トを組み合わせてデプロイ
はまったポイント l Greengrassにバグがある l メッセージの送信を許可するトピックの設定に、”hello/#”のようにワイル ドカードを挟むと、メッセージが二重に送信されるバグがあった l AWSに問い合わせ後、約3ヶ月やりとりした後に修正版リリース l その他
l JavaScriptには新ver用のsdkがないため、LegacySubscriptionRouterが必要 l メモリ増やすにはLambdaのメモリだけでなくJVMの設定が必要 12
実運用に向けたポイント l ログの設定 l CloudWatchにログを送れますが、挙動に少しクセがあります l リアルタイムでは送れない。デバイスに新しいログファイルが生成される タイミングで送られる l 1時間経過&次の時間の新しいログが出力された場合
l ログファイルのサイズ上限(1024KB)をオーバーした場合 l 厳密にリアルタイムで見るにはデバイスにsshするしかない 13 ↓デバイス上のログファイル
まとめ l Greengrassを使うと、エッジデバイス(ラズパイなど)から簡単に クラウドにデータを送れます l たまにバグと出くわしたり、トラブルが起きた時の情報がまだ少 ないです →抱え込みすぎず、サポートなどを有効に活用しましょう 14
None
実運用に向けたポイント l 複数環境の構築 l Greengrassのグループを使用して、送信するトピックを分けています 16 テスト用グループ 本番用グループ デバイス ①
デバイス ② デバイス ③ デバイス ④ *P5$PSF stg/hello prd/hello テスト用Lambda 本番用Lambda