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.2k
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
240
Facade Patternで磨く、コードの可読性と分解力 / MIERUNE BBQ #13
mierune
PRO
0
210
ハザードマップゲームの作り方〜ハザード情報をゲームのパラメーターに落とし込む〜 / FOSS4G 2024 Japan
mierune
PRO
0
350
MIERUNEとQGIS、そしてQGIS事業のご紹介 / FOSS4G 2024 Japan
mierune
PRO
0
330
QGISで実現するもっと分かりやすい森林ゾーニング / FOSS4G 2024 Japan
mierune
PRO
0
330
君はこの色の違いを見ることができるか / MIERUNE BBQ #12
mierune
PRO
0
310
クーダでハニワ / MIERUNE BBQ #12
mierune
PRO
0
270
位置情報とオープンソースがやりたくてMIERUNEに転職した話 〜経歴、事例紹介、GISへのいざない〜 / MIERUNE JCT - Tokyo 2024
mierune
PRO
0
1.1k
クロージング / MIERUNE JCT - Tokyo 2024
mierune
PRO
0
840
Other Decks in Technology
See All in Technology
Oracle Database Technology Night #87-1 : Exadata Database Service on Exascale Infrastructure(ExaDB-XS)サービス詳細
oracle4engineer
PRO
1
180
クラウド食堂とは?
hiyanger
0
110
入門 PEAK Threat Hunting @SECCON
odorusatoshi
0
160
生成AI “再”入門 2025年春@WIRED TUESDAY EDITOR'S LOUNGE
kajikent
0
110
いまからでも遅くない!コンテナでWebアプリを動かしてみよう!コンテナハンズオン編
nomu
0
150
JAWS FESTA 2024「バスロケ」GPS×サーバーレスの開発と運用の舞台裏/jawsfesta2024-bus-gps-serverless
ma2shita
3
170
MIMEと文字コードの闇
hirachan
2
1.4k
AIエージェント入門
minorun365
PRO
31
18k
ExaDB-XSで利用されているExadata Exascaleについて
oracle4engineer
PRO
3
250
30→150人のエンジニア組織拡大に伴うアジャイル文化を醸成する役割と取り組みの変化
nagata03
0
180
Goで作って学ぶWebSocket
ryuichi1208
3
2.8k
RemoveだらけのPHPUnit 12に備えよう
cocoeyes02
0
290
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
67
11k
Testing 201, or: Great Expectations
jmmastey
42
7.2k
Into the Great Unknown - MozCon
thekraken
35
1.6k
Become a Pro
speakerdeck
PRO
26
5.2k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
RailsConf 2023
tenderlove
29
1k
It's Worth the Effort
3n
184
28k
Designing for humans not robots
tammielis
250
25k
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
175
52k
What's in a price? How to price your products and services
michaelherold
244
12k
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のスケーラビリティを活用できる まとめ
© 地理院地図 全国最新写真(シームレス)