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
640
Facade Patternで磨く、コードの可読性と分解力 / MIERUNE BBQ #13
mierune
PRO
0
460
ハザードマップゲームの作り方〜ハザード情報をゲームのパラメーターに落とし込む〜 / FOSS4G 2024 Japan
mierune
PRO
0
710
MIERUNEとQGIS、そしてQGIS事業のご紹介 / FOSS4G 2024 Japan
mierune
PRO
0
660
QGISで実現するもっと分かりやすい森林ゾーニング / FOSS4G 2024 Japan
mierune
PRO
0
730
君はこの色の違いを見ることができるか / MIERUNE BBQ #12
mierune
PRO
0
560
クーダでハニワ / MIERUNE BBQ #12
mierune
PRO
0
510
位置情報とオープンソースがやりたくてMIERUNEに転職した話 〜経歴、事例紹介、GISへのいざない〜 / MIERUNE JCT - Tokyo 2024
mierune
PRO
0
1.6k
クロージング / MIERUNE JCT - Tokyo 2024
mierune
PRO
0
1.2k
Other Decks in Technology
See All in Technology
Implementing and Evaluating a High-Level Language with WasmGC and the Wasm Component Model: Scala’s Case
tanishiking
0
180
Copilot Studio ハンズオン - 生成オーケストレーションモード
tomoyasasakimskk
0
220
様々なファイルシステム
sat
PRO
0
240
CNCFの視点で捉えるPlatform Engineering - 最新動向と展望 / Platform Engineering from the CNCF Perspective
hhiroshell
0
140
Zephyr(RTOS)にEdge AIを組み込んでみた話
iotengineer22
1
340
デザインとエンジニアリングの架け橋を目指す OPTiMのデザインシステム「nucleus」の軌跡と広げ方
optim
0
110
GraphRAG グラフDBを使ったLLM生成(自作漫画DBを用いた具体例を用いて)
seaturt1e
1
140
[2025年10月版] Databricks Data + AI Boot Camp
databricksjapan
1
260
ストレージエンジニアの仕事と、近年の計算機について / 第58回 情報科学若手の会
pfn
PRO
3
820
OCIjp_Oracle AI World_Recap
shinpy
1
180
ソフトウェアエンジニアの生成AI活用と、これから
lycorptech_jp
PRO
0
900
コンパウンド組織のCRE #cre_meetup
layerx
PRO
1
260
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
340
57k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
54k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
Side Projects
sachag
455
43k
Scaling GitHub
holman
463
140k
Rails Girls Zürich Keynote
gr2m
95
14k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
Context Engineering - Making Every Token Count
addyosmani
8
300
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のスケーラビリティを活用できる まとめ
© 地理院地図 全国最新写真(シームレス)