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
ValhallaとAWS Lambdaでサーバーレス・ルーティング / MIERUNE JCT...
Search
MIERUNE
PRO
August 30, 2023
Technology
1
1.3k
ValhallaとAWS Lambdaでサーバーレス・ルーティング / MIERUNE JCT #01
20230830開催のオンラインイベントMIERUNE JCT #01 での発表
ValhallaとAWS Lambdaでサーバーレス・ルーティング/Kanahiro Iguchi(MIERUNE)
MIERUNE
PRO
August 30, 2023
Tweet
Share
More Decks by MIERUNE
See All by MIERUNE
連続的な到達圏を表示する QGISプラグインを作ってみた
mierune
PRO
0
500
Facade Patternで磨く、コードの可読性と分解力 / MIERUNE BBQ #13
mierune
PRO
0
370
ハザードマップゲームの作り方〜ハザード情報をゲームのパラメーターに落とし込む〜 / FOSS4G 2024 Japan
mierune
PRO
0
550
MIERUNEとQGIS、そしてQGIS事業のご紹介 / FOSS4G 2024 Japan
mierune
PRO
0
520
QGISで実現するもっと分かりやすい森林ゾーニング / FOSS4G 2024 Japan
mierune
PRO
0
550
君はこの色の違いを見ることができるか / MIERUNE BBQ #12
mierune
PRO
0
460
クーダでハニワ / MIERUNE BBQ #12
mierune
PRO
0
420
位置情報とオープンソースがやりたくてMIERUNEに転職した話 〜経歴、事例紹介、GISへのいざない〜 / MIERUNE JCT - Tokyo 2024
mierune
PRO
0
1.4k
クロージング / MIERUNE JCT - Tokyo 2024
mierune
PRO
0
1k
Other Decks in Technology
See All in Technology
Amazon Bedrockで実現する 新たな学習体験
kzkmaeda
2
550
HiMoR: Monocular Deformable Gaussian Reconstruction with Hierarchical Motion Representation
spatial_ai_network
0
110
Understanding_Thread_Tuning_for_Inference_Servers_of_Deep_Models.pdf
lycorptech_jp
PRO
0
120
5min GuardDuty Extended Threat Detection EKS
takakuni
0
140
登壇ネタの見つけ方 / How to find talk topics
pinkumohikan
5
480
BrainPadプログラミングコンテスト記念LT会2025_社内イベント&問題解説
brainpadpr
1
160
より良いプロダクトの開発を目指して - 情報を中心としたプロダクト開発 #phpcon #phpcon2025
bengo4com
1
3.1k
Lambda Web Adapterについて自分なりに理解してみた
smt7174
3
110
AWS CDK 実践的アプローチ N選 / aws-cdk-practical-approaches
gotok365
6
750
TechLION vol.41~MySQLユーザ会のほうから来ました / techlion41_mysql
sakaik
0
180
Navigation3でViewModelにデータを渡す方法
mikanichinose
0
220
mrubyと micro-ROSが繋ぐロボットの世界
kishima
2
290
Featured
See All Featured
A Tale of Four Properties
chriscoyier
160
23k
The Cult of Friendly URLs
andyhume
79
6.5k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
790
4 Signs Your Business is Dying
shpigford
184
22k
The Pragmatic Product Professional
lauravandoore
35
6.7k
Statistics for Hackers
jakevdp
799
220k
Adopting Sorbet at Scale
ufuk
77
9.4k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
The Straight Up "How To Draw Better" Workshop
denniskardys
234
140k
BBQ
matthewcrist
89
9.7k
Transcript
MIERUNE JCT #1 ValhallaとAWS Lambdaで サーバーレス・ルーティング IGUCHI Kanahiro
©Project PLATEAU / MLIT Japan https://github.com/Kanahiro 井口 奏大 自己紹介 IGUCHI Kanahiro
GIS/OSS Enthusiast https://qiita.com/Kanahiro CTO at MIERUNE MapLibre User Group Japan
©Project PLATEAU / MLIT Japan 自己紹介 著書「現場のプロがわかりやすく教える位置情報エンジニア養成講座」 全国の書店・ECサイトにて好評発売中です!
©Project PLATEAU / MLIT Japan 技術評論社「Software Design」にて 「位置情報エンジニアリングのすすめ」連載中 自己紹介
©OpenStreetMap contributors 01|ルーティングサーバーValhalla 02|AWS LambdaとWeb Adapter 03|LambdaでValhallaを動かす 目次
©OpenStreetMap contributors 01 ルーティングサーバーValhalla
©Project PLATEAU / MLIT Japan ルーティングサーバーValhalla https://github.com/valhalla/valhalla/
©Project PLATEAU / MLIT Japan ⚫ OSMベースでOSSなルーティングサーバー ⚫ 単純な2点間ルーティングのほか、等時間線など 多彩なAPI
⚫ RDBなどの外部ストレージに非依存 →ゆえに構築・運用が非常にかんたん・低コスト ルーティングサーバーValhalla
©OpenStreetMap contributors 02 AWS LambdaとWeb Adapter
©Project PLATEAU / MLIT Japan AWS LambdaとWeb Adapter ⚫ AWS
Lambdaは最早説明不要、サーバーレスに関数を実行出来るFaaS ⚫ いろんなイベントを「トリガー」に、関数を実行出来る
©Project PLATEAU / MLIT Japan AWS LambdaとWeb Adapter ⚫ Lambdaはコンテナも動かすことが出来る、しかし…
⚫ Lambda用のエントリーポイント、いわゆるHandler関数が必須 ⚫ つまり… ◦ 汎用的なウェブサーバーは動かないし ◦ Handler関数を実装した状態だとLambda以外で動かない ⚫ 問題:ローカル開発しにくい、テストしにくい、AWSへのロックイン… →そこでWeb Adapter!
©Project PLATEAU / MLIT Japan ⚫ https://github.com/awslabs/aws-lambda-web-adapter ⚫ AWS公式のOSS、HTTPを話す任意のコンテナがLambda動くようになる ⚫
使い方は非常にシンプルで… ◦ Lambdaで動作させたい任意のコンテナに下記の行を追加するのみ ◦ COPY --from=public.ecr.aws/awsguru/aws-lambda-adapter:0.7.0 /lambda-adapter /opt/extensions/lambda-adapter ◦ (その他、追加で環境変数などをセットする必要がある) ⚫ AWSの中の人による記事 ◦ https://aws.amazon.com/jp/builders-flash/202301/lamb da-web-adapter/?awsf.filter-name=*all AWS LambdaとWeb Adapter
©Project PLATEAU / MLIT Japan AWS LambdaとWeb Adapter ⚫ 何がうれしいのか:
◦ 上記の行を追加しても、コンテナの動作に影響を与えない ▪ =同一コードでLambda内外で動作する ◦ Lambdaの運用容易性・スケーラビリティの恩恵を受けられる ⚫ 余談: LambdaでHTTPリクエストを受けるにはAPI Gatewayが必要だったが… ◦ Function URLを利用することで、Lambda単体でHTTPリクエストを受けること が出来る ◦ →極めてシンプルに、スケーラブルなサーバーを運用することができる
©OpenStreetMap contributors 03 LambdaでValhallaを動かす
©Project PLATEAU / MLIT Japan LambdaでValhallaを動かす https://zenn.dev/kanahiro/scraps/1c24e4cc73f2d5 サンプルコードはこちらで公開中
©Project PLATEAU / MLIT Japan ⚫ Valhallaの公式イメージを利 用して、ビルド済みのネットワー クデータも同梱するイメージを 作る
⚫ 外部のストレージに依存しない のでLambda的にうれしい! LambdaでValhallaを動かす: コンテナイメージを作成 Zennのスクラップより引用
©Project PLATEAU / MLIT Japan ⚫ Valhallaの公式イメージ ⚫ Web Adapterの部分
◦ 必要なファイルのコピー ◦ listenするポート ◦ ヘルスチェック用のエンド ポイント ⚫ Valhallaのネットワークデータ のビルド LambdaでValhallaを動かす: コンテナイメージを作成 Zennのスクラップより引用
©Project PLATEAU / MLIT Japan LambdaでValhallaを動かす: ECRにデプロイ ⚫ ECRにリポジトリを作成 ⚫
イメージをビルド ⚫ リポジトリにイメージをプッシュする
©Project PLATEAU / MLIT Japan LambdaでValhallaを動かす: Lambdaを作成 ⚫ 今回はマネジメントコンソールで作成する ⚫
コンテナを動かしたいのでコンテナイメージ を選択 ⚫ 「コンテナイメージURI」で、ECRで作成した リポジトリとプッシュしたイメージを選択する ⚫ 作成後、「設定」から関数URLを作成しておく
©Project PLATEAU / MLIT Japan LambdaでValhallaを動かす ⚫ 以上の手順だけで、Lambdaで動作するルー ティングサーバーが起動する ⚫
curl https://<your-lambda-function-url>.lambda-url.ap-northeast -1.on.aws/isochrone?json=%7B%22locations%22%3A%5B%7B%22lat %22%3A43.0744014%2C%22lon%22%3A141.3390508%7D%5D%2C%22cost ing%22%3A%22pedestrian%22%2C%22contours%22%3A%5B%7B%22time %22%3A15.0%2C%22color%22%3A%22ff0000%22%7D%5D%7D ⚫ これはisochrone=等時間線を計算するエンド ポイント、たとえば右のような結果が得られる この手順で起動したValhallaによる処理結果 ©OpenStreetMap Contributors
© 地理院地図 全国最新写真(シームレス) ⚫Web Adapterでポータブルにコンテナ運用 ⚫どんなコンテナでもAWS Lambdaのスケーラビリティを活用できる まとめ
© 地理院地図 全国最新写真(シームレス)