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
630
Facade Patternで磨く、コードの可読性と分解力 / MIERUNE BBQ #13
mierune
PRO
0
460
ハザードマップゲームの作り方〜ハザード情報をゲームのパラメーターに落とし込む〜 / FOSS4G 2024 Japan
mierune
PRO
0
700
MIERUNEとQGIS、そしてQGIS事業のご紹介 / FOSS4G 2024 Japan
mierune
PRO
0
660
QGISで実現するもっと分かりやすい森林ゾーニング / FOSS4G 2024 Japan
mierune
PRO
0
720
君はこの色の違いを見ることができるか / MIERUNE BBQ #12
mierune
PRO
0
550
クーダでハニワ / MIERUNE BBQ #12
mierune
PRO
0
500
位置情報とオープンソースがやりたくて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
初めてのDatabricks Apps開発
taka_aki
1
200
私のMCPの使い方
tsubakimoto_s
0
110
いまからでも遅くない!SSL/TLS証明書超入門(It's not too late to start! SSL/TLS Certificates: The Absolute Beginner's Guide)
norimuraz
0
280
物体検出モデルでシイタケの収穫時期を自動判定してみた。 #devio2025
lamaglama39
0
240
ローカルLLMとLINE Botの組み合わせ その2(EVO-X2でgpt-oss-120bを利用) / LINE DC Generative AI Meetup #7
you
PRO
0
100
Databricks AI/BI Genie の「値ディクショナリー」をAmazonの奥地(S3)まで見に行く
kameitomohiro
1
310
「最速」で Gemini CLI を使いこなそう! 〜Cloud Shell/Cloud Run の活用〜 / The Fastest Way to Master the Gemini CLI — with Cloud Shell and Cloud Run
aoto
PRO
0
130
Data Hubグループ 紹介資料
sansan33
PRO
0
2.2k
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
43k
プレーリーカードを活用しよう❗❗デジタル名刺交換からはじまるイベント会場交流のススメ
tsukaman
0
190
Claude Code Subagents 再入門 ~cc-sddの実装で学んだこと~
gotalab555
10
16k
Introdução a Service Mesh usando o Istio
aeciopires
1
230
Featured
See All Featured
Docker and Python
trallard
46
3.6k
Building a Scalable Design System with Sketch
lauravandoore
463
33k
Music & Morning Musume
bryan
46
6.8k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.2k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.5k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
Build your cross-platform service in a week with App Engine
jlugia
232
18k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
22k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
Git: the NoSQL Database
bkeepers
PRO
431
66k
For a Future-Friendly Web
brad_frost
180
10k
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のスケーラビリティを活用できる まとめ
© 地理院地図 全国最新写真(シームレス)