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
550
Facade Patternで磨く、コードの可読性と分解力 / MIERUNE BBQ #13
mierune
PRO
0
410
ハザードマップゲームの作り方〜ハザード情報をゲームのパラメーターに落とし込む〜 / FOSS4G 2024 Japan
mierune
PRO
0
620
MIERUNEとQGIS、そしてQGIS事業のご紹介 / FOSS4G 2024 Japan
mierune
PRO
0
590
QGISで実現するもっと分かりやすい森林ゾーニング / FOSS4G 2024 Japan
mierune
PRO
0
640
君はこの色の違いを見ることができるか / MIERUNE BBQ #12
mierune
PRO
0
500
クーダでハニワ / MIERUNE BBQ #12
mierune
PRO
0
460
位置情報とオープンソースがやりたくてMIERUNEに転職した話 〜経歴、事例紹介、GISへのいざない〜 / MIERUNE JCT - Tokyo 2024
mierune
PRO
0
1.5k
クロージング / MIERUNE JCT - Tokyo 2024
mierune
PRO
0
1.1k
Other Decks in Technology
See All in Technology
【 LLMエンジニアがヒューマノイド開発に挑んでみた 】 - 第104回 Machine Learning 15minutes! Hybrid
soneo1127
0
120
事業価値と Engineering
recruitengineers
PRO
3
800
会社にデータエンジニアがいることでできるようになること
10xinc
9
1.6k
[CV勉強会@関東 CVPR2025 読み会] MegaSaM: Accurate, Fast, and Robust Structure and Motion from Casual Dynamic Videos (Li+, CVPR2025)
abemii
0
200
Evolution on AI Agent and Beyond - AGI への道のりと、シンギュラリティの3つのシナリオ
masayamoriofficial
0
190
ゆるふわエンジニアでもAIフローにチャレンジしたい!!~Zapierのすゝめ~
masakiokuda
2
100
「守る」から「進化させる」セキュリティへ ~AWS re:Inforce 2025参加報告~ / AWS re:Inforce 2025 Participation Report
yuj1osm
1
140
トヨタ生産方式(TPS)入門
recruitengineers
PRO
4
430
あなたの知らない OneDrive
murachiakira
0
240
現場が抱える様々な問題は “組織設計上” の問題によって生じていることがある / Team-oriented Organization Design 20250827
mtx2s
6
1.5k
マイクロモビリティシェアサービスを支える プラットフォームアーキテクチャ
grimoh
1
240
自社製CMSからmicroCMSへのリプレースがプロダクトグロースを加速させた話
nextbeatdev
0
150
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
480
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
820
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
780
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Docker and Python
trallard
45
3.5k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
The World Runs on Bad Software
bkeepers
PRO
70
11k
For a Future-Friendly Web
brad_frost
179
9.9k
The Straight Up "How To Draw Better" Workshop
denniskardys
236
140k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
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のスケーラビリティを活用できる まとめ
© 地理院地図 全国最新写真(シームレス)