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
GeoFence使って侵入検知作ってみた /aws_basics_location_serv...
Search
Kenichiro Wada
July 17, 2021
Technology
0
210
GeoFence使って 侵入検知作ってみた /aws_basics_location_service_lt
2021.07.17 AWSの基礎を学ぼう 特別編
最新サービスをみんなで触ってみるはじめての位置情報サービス
でのLT資料です。
LT内で出てくるLambdaのソースコードは近日中に公開予定です。
Kenichiro Wada
July 17, 2021
Tweet
Share
More Decks by Kenichiro Wada
See All by Kenichiro Wada
My First Impression Of Kiro / 20250801-kumoben-lt
kwada
0
82
(全日本人)待望のS3トリガーのLambda無限ループ対応について / chibaraki-1
kwada
0
150
AWS Lambdaに出会って人生が変わった1人の10年間 /awslambda10th
kwada
0
100
GPSデバイスを使った簡易位置案内システムの構築をしてみた話。/jawsfesta2024
kwada
0
830
とある航空会社の飛行機の乗り方をお教えします。/20240913-lt
kwada
3
320
Building a Simple Navigation Guide Service Using GPS Devices/jaws-pankration2024
kwada
0
130
IaCジェネレーターを使って、昔に作ったLambda関数をCDK管理下においてみた / jaws-ug-josys-30
kwada
0
140
SORACOM UG Explorer 2023ハンズオンの裏側サービスを紹介 / soracom-ug-online-17
kwada
0
330
(2023.08.17 Update)Detecting and stopping recursive loops in AWS Lambda functionsでAWS Lambdaの無限ループを防ぐ! / jaws-ug-shizuoka
kwada
0
250
Other Decks in Technology
See All in Technology
from Sakichi Toyoda to Agile
kawaguti
PRO
1
100
LLM時代にデータエンジニアの役割はどう変わるか?
ikkimiyazaki
6
1.1k
From Prompt to Product @ How to Web 2025, Bucharest, Romania
janwerner
0
120
英語は話せません!それでも海外チームと信頼関係を作るため、対話を重ねた2ヶ月間のまなび
niioka_97
0
130
プロポーザルのコツ ~ Kaigi on Rails 2025 初参加で3名の登壇を実現 ~
naro143
1
160
Optuna DashboardにおけるPLaMo2連携機能の紹介 / PFN LLM セミナー
pfn
PRO
2
930
Access-what? why and how, A11Y for All - Nordic.js 2025
gdomiciano
1
120
関係性が駆動するアジャイル──GPTに人格を与えたら、対話を通してふりかえりを習慣化できた話
mhlyc
0
130
SREとソフトウェア開発者の合同チームはどのようにS3のコストを削減したか?
muziyoshiz
1
110
空間を設計する力を考える / 20251004 Naoki Takahashi
shift_evolve
PRO
4
440
Goに育てられ開発者向けセキュリティ事業を立ち上げた僕が今向き合う、AI × セキュリティの最前線 / Go Conference 2025
flatt_security
0
360
Vibe Coding Year in Review. From Karpathy to Real-World Agents by Niels Rolland, CEO Paatch
vcoisne
0
110
Featured
See All Featured
Making Projects Easy
brettharned
119
6.4k
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.9k
Bash Introduction
62gerente
615
210k
Balancing Empowerment & Direction
lara
4
680
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.7k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
32
2.3k
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.9k
Building Adaptive Systems
keathley
43
2.8k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
Raft: Consensus for Rubyists
vanstee
139
7.1k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Transcript
(FP'FODFͬͯ ৵ೖݕ࡞ͬͯΈͨ BXTCBTJDT TPSBDPN 2021.07.17 AWSの基礎を学ぼう 特別編 最新サービスをみんなで触ってみる はじめての位置情報サービス 和⽥健⼀郎@Keni_W
⾃⼰紹介 ⽒名:和⽥ 健⼀郎 所属:アイレット株式会社 エンジニア JAWS-UG 千葉 運営メンバー SORACOM UG東京
運営メンバー 昨年共著でサーバーレス本書きました。 Twitter: @Keni_W Facebook : kenichiro.wada.3 好きなAWSサービス : AWS Lambda 2021 APN AWS Top Engineers
ࠓ͢͜ͱ BXTCBTJDT TPSBDPN • とりあえずやってみたで作った • 構成図とか • GeoFenceを作る •
Lambdaで位置情報投⼊ • Lambdaで通知 • こうなる • 感想 (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ
ͱΓ͋͑ͣͬͯΈͨͰ࡞ͬͨ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ • やってみた枠ということで、 完全にLT登壇駆動開発です。 JAWS UG IoT専⾨⽀部の体験会参加して、
思いついた構想を実装したものです。 • 位置情報を⼿軽にクラウド上にアップでき るデバイスを持っていたのも⼤きい。
ߏਤͱ͔ BXTCBTJDT TPSBDPN 構成図 -位置情報取得部- (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ
ߏਤͱ͔ BXTCBTJDT TPSBDPN 構成図 -通知部- (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ
ߏਤͱ͔ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ • ソラコムさんが発売している 温度、湿度、加速度センサー、 GPSを搭載したバッテリー内 蔵のデバイス。 •
SORACOMサービスと組み合 わせて簡単に可視化まででき る超絶便利なデバイス。
(FP'FODFΛ࡞Δ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ • ⼿順の細かい説明は割愛します。 • 今回は、弊社オフィスがある⻁ノ⾨ヒルズ に⾏く機会があった(出社と⾔います)ので、 そこへの侵⼊検知を⾏なっています。
(適切に侵⼊してますよ)
(FP'FODFΛ࡞Δ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ • geojson.ioを使って、⻁ノ⾨ヒルズの周囲 の緯度経度を取得し、それをGeoFenceと してアップロードします。
-BNCEBͰҐஔใೖ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ • GPSマルチユニットからのデータは、 SORACOM FunkからAWS Lambdaの関数 を実⾏する際のEventオブジェクトにセッ
トされて渡ります。
-BNCEBͰҐஔใೖ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ • Eventオブジェクト内にlat(緯度)とlon(経 度)が⼊っているので、 location.batchUpdateDevicePositionの パラメータにセット(Positon)して投⼊しま す。
const devicePostion = { DeviceId: deviceId, Position: [ event.lon, event.lat ], SampleTime: moment(date).toISOString() } GPSマルチユニットからの緯度 (event.lat)、経度(event.lon)情報
-BNCEBͰ௨ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ • ハンズオンでもやったとおり、GeoFence のENTER、EXITのイベントが発⽣すると、 Cloudwatch Logsに格納されるので、それ をトリガーにLambda関数を起動します。
-BNCEBͰ௨ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ • Base64エンコードされているので、それを デコードおよびバイナリ展開して、メッ セージを取り出して整形して、LINE Notify に送信します。
# CloudWatchLogsからのデータはbase64エンコードされているのでデコード decoded_data = base64.b64decode(event['awslogs']['data']) # バイナリに圧縮されているため展開 json_data = json.loads(gzip.decompress(decoded_data)) logger.info("EVENT: " + json.dumps(json_data)) message = json_data['logEvents'][0]['message'] json_message = json.loads(message) message = create_message(json_message['detail'])
͜͏ͳΔ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ
͜͏ͳΔ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ
͜͏ͳΔ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ
ײʑ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ • 結構簡単にできました。 • GeoFenceを建物ギリギリしたら、In/Out がうまく検知できず(建物内は位置情報取 れにくいため)、ちょっと⼤きめの
GeoFenceにして対応。 • 実際に実機で試していると、通知くるか な?ってドキドキ待つのが楽しかった。
ײʑ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ • はまった点は以下 • 位置情報は配列で経度、緯度の順でセッ ト、返却される。 •
Google Mapの地図を表⽰させる場合、 緯度・経度の順でセットするので注意。 • 前述の通り、GPSの送信間隔によっては、 うまく検知できないこともある。 • ちょっとGeoFenceを⼤きめにして対処
ײʑ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ • はまった点は以下 • geojson.ioで 緯度が4xxとかでて、 GeoFenceとして登録した際、
エラーになりました
ײʑ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ • 他への流⽤としては、 • 家と学校にGeoFenceを配置して、登下 校を⾃動⾒守りとか。 •
デバイス保持者が区域外に出たら通知す るとか(逆もあり)。 • あれ、これって ビジネスになる?w
ײʑ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ
ײʑ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ Resource create, read, update, delete, or
list requests $0.01 per 1,000 = $0.01 = 1.1円 Resource create, read, update, delete, or list requests $0.01 per 1,000 = $0.01 = 1.1円 Map tiles retrieved (Vector or Raster) $0.04 per 1,000 = $0.04 = 4.4円 Resource create, read, update, delete, or list requests $0.01 per 1,000 = $0.01 = 1.1円 Geofences created, deleted or described $0.05 per 1,000 = $0.01 = 5.5円 Geofence list requests $0.05 per 1,000 = $0.01 = 5.5円 Positions evaluated $0.20 per 1,000 = $0.20 = 22円 Positions written $0.05 per 1,000 = $0.05 = 5.5円 Batch positions read $0.05 per 1,000 = $0.05 = 5.5円 Resource create, read, update, delete, or list requests$0.01 per 1,000 = $0.01 = 1.1円
ײʑ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ • ちょっと試してみたい・・・ と思ったそこのアナタ。 今ならGPSマルチユニット、 セール中です。 (~2021/07/31まで)
ײʑ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ ご静聴 ありがとう ございました