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
impressions-trying-lambda-web-adapter
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Junki Ishigaki
June 06, 2025
Technology
360
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
impressions-trying-lambda-web-adapter
Junki Ishigaki
June 06, 2025
More Decks by Junki Ishigaki
See All by Junki Ishigaki
introduction-lambda-rust
junkishigaki
0
120
query-for-s3-2025
junkishigaki
0
75
talk_about_wasmwasi
junkishigaki
0
320
Athenaのコスト節約を考える
junkishigaki
0
40
CloudWatch Logs Insightsをめぐるあれこれ
junkishigaki
0
170
Other Decks in Technology
See All in Technology
次世代ランサムウェア対策の考察 / 20260704 Mitsutoshi Matsuo
shift_evolve
PRO
5
1.7k
ループエンジニアリングでE2Eテストを実践
noriyukitakei
0
310
AIと共生する開発者プラットフォーム:バクラクのモノレポ×マイクロサービス基盤
sakajunquality
1
2.4k
完全自律ロボットを作りたくて、先に開発を自律させた話(ROS Japan UG #63 LT)
rryz09
0
400
LiDAR SLAMの実装とセンサ融合 ~Lie群からContinuous-Time LIOまで~
naokiakai
1
1k
product engineering with qa
nealle
0
150
美しいコードを書くためにF#を学んでみた話
yud0uhu
1
330
Amazon EVS で VCF 9.0 / 9.1 のサポート開始まとめ
mtoyoda
0
280
Agentic AI 時代のテスト手法: Kiro とはじめるプロパティベーステスト (AWS Summit Japan 2026 | DEV212)
ymhiroki
0
220
20260702_生成AIはどこまで成長するのか_チャットだけじゃない世界
doradora09
PRO
0
110
AI Agent SaaS を支える自社仮想化基盤への挑戦と実運用 / ai-agent-saas-virtualization
flatt_security
2
2.9k
GuardrailからGovernanceへ~AIエージェント運用の次の課題~
sbspsy
1
220
Featured
See All Featured
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
330
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.7k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.2k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
150
Mind Mapping
helmedeiros
PRO
1
280
Joys of Absence: A Defence of Solitary Play
codingconduct
1
410
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
HDC tutorial
michielstock
2
730
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
A designer walks into a library…
pauljervisheath
211
24k
Transcript
JAWS-UG 神戸 #6 Junki Ishigaki June 6, 2025 #jawsug_kobe #jawsug
石垣潤樹 / Junki Ishigaki - 所属 → 株式会社シーズ - やっていること
→ インフラエンジニア - やっていること → AWSとかさわってます - 好きなAWSサービス → S3 - 最近 → Amplify Gen2楽しい, DuckDBいいね - 好き → ラーメン, 担々麺 2 社内で使ってるアイコン x.com/tokyo_jjjx 自己紹介
目次 - Lambda Web Adapterおさらい - 今回試しにやってみたこと - 感想など 3
Lambda Web Adapterおさらい - Lambda Web Adapterとは - ざっくりいうと、Lambdaに対する入出力とWebAppフレームワークのインタ ーフェースの媒介
- もっとざっくりいうと、Lambdaに入力されたものをごにょごにょうまい具合 に変換してWebApp側に渡すツール - そもそもの発端は、開発者が使い慣れたWebAppフレームワークをLambda上 で動かせるようにという経緯。 4 https://github.com/awslabs/aws-lambda-web-adapter?tab=readme-ov-file#aws-lambda-web-adapter
Lambda Web Adapterおさらい 5 https://github.com/awslabs/aws-lambda-web-adapter/blob/main/docs/images/lambda-adapter-overview.png
今回試しにやってみたこと 6 # プロジェクトのファイル構成 simpleapi/ │ ├── app/ # アプリケーションディレクトリ
│ ├── src/ # ソースコードディレクトリ │ │ ├── main.rs # メインのRustコード(APIエンドポイント定義) │ │ └── data.rs # データ管理モジュール(モデルとデータ操作関数) │ ├── Cargo.toml # Rustの依存関係設定 │ ├── Dockerfile # マルチステージビルド用Dockerfile(ローカル/Lambda両対応) │ └── README.md # アプリケーションのREADME │ ├── cdk/ # CDKプロジェクトディレクトリ │ ├── bin/ # CDKアプリケーションのエントリポイント │ │ └── app.ts # CDKアプリケーション定義 │ ├── lib/ # CDKスタック定義 │ │ └── simple-api-stack.ts # APIスタック定義(Lambda + API Gateway) │ ├── package.json # Node.js依存関係 │ └── tsconfig.json # TypeScript設定 └── docker-compose.yml # ローカル開発用Docker Compose設定 WebApp CDKでAWSにdeploy
今回試しにやってみたこと 7 # プロジェクトのファイル構成 simpleapi/ │ ├── app/ # アプリケーションディレクトリ
│ ├── src/ # ソースコードディレクトリ │ │ ├── main.rs # メインのRustコード(APIエンドポイント定義) │ │ └── data.rs # データ管理モジュール(モデルとデータ操作関数) │ ├── Cargo.toml # Rustの依存関係設定 │ ├── Dockerfile # マルチステージビルド用Dockerfile(ローカル/Lambda両対応) │ └── README.md # アプリケーションのREADME │ ├── cdk/ # CDKプロジェクトディレクトリ │ ├── bin/ # CDKアプリケーションのエントリポイント │ │ └── app.ts # CDKアプリケーション定義 │ ├── lib/ # CDKスタック定義 │ │ └── simple-api-stack.ts # APIスタック定義(Lambda + API Gateway) │ ├── package.json # Node.js依存関係 │ └── tsconfig.json # TypeScript設定 └── docker-compose.yml # ローカル開発用Docker Compose設定 WebApp CDKでAWSにdeploy Dockerfile [1行追加] COPY --from=public.ecr.aws/awsguru/aws-lambda-adapter:0.9.1 /lambda-adapter /opt/extensions/lambda-adapter
こんな感じ 8 GET /items GET /users
ここから感想パート 9 - ルーティングどこでやるか問題 - デメリットぽいところ - メリットぽいところ - いつもの開発
- 役割分担がしやすい - 可搬性
ルーティングどこでやるか問題 10 - Lambda-> 単機能で小さく素早く返すべきという話が一方であります API Gatewayでルーティングさせるパターン
ルーティングどこでやるか問題 11 - 今回の構成は、API Gatewayからany requestを1つのLambdaに流してます。 今回のパターン(いわゆるLambdalith) ここのLambdaが大きくな っていきます
デメリットぽいところ 12 - コールドスタート問題 - Lambdaの起動までに時間かかるという問題 - Lambdaのパッケージ自体が大きくなるほど影響が大きくなる - 同時実行数
- Lambdaの同時実行数はAWSアカウント毎(かつリージョン毎)ではあるものの、 Lambdaが大きくなって処理時間が伸びると同時性が高まって上限を気にしな いといけないケースも出てくる。 - オブザーバビリティ - Lambdaのエラーレイトを見るだけでは、どのAPIのエラーかわからないなど ※そもそも小分けのパターンでも計装はしたほうがいいとは思います などなど
メリットぽいところ 13 - 開発者が使い慣れたWebAppフレームワークをLambda上で動かせる # プロジェクトのファイル構成 simpleapi/ │ ├── app/
# アプリケーションディレクトリ │ ├── src/ # ソースコードディレクトリ │ │ ├── main.rs # メインのRustコード(APIエンドポイント定義) │ │ └── data.rs # データ管理モジュール(モデルとデータ操作関数) │ ├── Cargo.toml # Rustの依存関係設定 │ ├── Dockerfile # マルチステージビルド用Dockerfile(ローカル/Lambda両対応) │ └── README.md # アプリケーションのREADME │ ├── cdk/ # CDKプロジェクトディレクトリ │ ├── bin/ # CDKアプリケーションのエントリポイント │ │ └── app.ts # CDKアプリケーション定義 │ ├── lib/ # CDKスタック定義 │ │ └── simple-api-stack.ts # APIスタック定義(Lambda + API Gateway) │ ├── package.json # Node.js依存関係 │ └── tsconfig.json # TypeScript設定 └── docker-compose.yml # ローカル開発用Docker Compose設定 ここの部分はいつも通りでで きる WebApp 開発チームごとに ・Next.js ・Flask ・Laravel ・ASP .Net ・Axum など
メリットぽいところ 14 - 役割分担がしやすい # プロジェクトのファイル構成 simpleapi/ │ ├── app/
# アプリケーションディレクトリ │ ├── src/ # ソースコードディレクトリ │ │ ├── main.rs # メインのRustコード(APIエンドポイント定義) │ │ └── data.rs # データ管理モジュール(モデルとデータ操作関数) │ ├── Cargo.toml # Rustの依存関係設定 │ ├── Dockerfile # マルチステージビルド用Dockerfile(ローカル/Lambda両対応) │ └── README.md # アプリケーションのREADME │ ├── cdk/ # CDKプロジェクトディレクトリ │ ├── bin/ # CDKアプリケーションのエントリポイント │ │ └── app.ts # CDKアプリケーション定義 │ ├── lib/ # CDKスタック定義 │ │ └── simple-api-stack.ts # APIスタック定義(Lambda + API Gateway) │ ├── package.json # Node.js依存関係 │ └── tsconfig.json # TypeScript設定 └── docker-compose.yml # ローカル開発用Docker Compose設定 開発者はビジネ スロジックに注 力 こっちは事前に Platformチーム から共有する など WebApp 環境
メリットぽいところ 15 - 可搬性 # プロジェクトのファイル構成 simpleapi/ │ ├── app/
# アプリケーションディレクトリ │ ├── src/ # ソースコードディレクトリ │ │ ├── main.rs # メインのRustコード(APIエンドポイント定義) │ │ └── data.rs # データ管理モジュール(モデルとデータ操作関数) │ ├── Cargo.toml # Rustの依存関係設定 │ ├── Dockerfile # マルチステージビルド用Dockerfile(ローカル/Lambda両対応) │ └── README.md # アプリケーションのREADME │ ├── cdk/ # CDKプロジェクトディレクトリ │ ├── bin/ # CDKアプリケーションのエントリポイント │ │ └── app.ts # CDKアプリケーション定義 │ ├── lib/ # CDKスタック定義 │ │ └── simple-api-stack.ts # APIスタック定義 │ ├── package.json # Node.js依存関係 │ └── tsconfig.json # TypeScript設定 └── docker-compose.yml # ローカル開発用Docker Compose設定 Platformチームから事前に別の 環境用のテンプレートが提供 されてたりすると嬉しかったり WebApp WebApp部分はそのままに 環境だけ切り替える 環境
メリットぽいところ 16 - 可搬性 - 例えば、パフォーマンスが気になってECSに載せ替えるなど(WebAppはその まま) 環境 WebApp こっちはそのまま
- WebAppはそのままでいろいろ環境を切り替えて使いたい(切り替えられる可能性 を残しておきたい)ような時に、LWAがあると切り替えられる環境のオプションに Lambdaを持っておける。 まとめ 17 WebApp 環境 Next.js Flask
ASP .Net Laravel Other… API Gateway Lambda+ LWA Axum ALB+ ECS CloudFront+ Lambda(関数URL)+ LWA Other…
- Lambda Web Adapter - Lambda Web Adapter でウェブアプリを (ほぼ)
そのままサーバーレス化する(2025 年改訂版) - https://aws.amazon.com/jp/builders-flash/202301/lambda-web-adapter/ - AWS Lambda Web Adapterを活用する新しいサーバーレスの実装パターン - https://speakerdeck.com/tmokmss/aws-lambda-web-adapterwohuo-yong-suruxin- siisabaresunoshi-zhuang-patan - WebアプリをLambdaで動かすまでに考えること - https://speakerdeck.com/_kensh/how-to-implement-monolithic-lambda-web-application - awslabs/aws-lambda-web-adapter - https://github.com/awslabs/aws-lambda-web-adapter - Platform Engineering - Platform Engineeringでクラウドの「楽しくない」を解消しよう - https://speakerdeck.com/jacopen/platform-engineeringde-kuraudono-le-sikunai-wojie- xiao-siyou - https://www.youtube.com/watch?v=mOnElI_KM6o 参考資料など 18
ありがとうございました re:play2023→