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
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
73
talk_about_wasmwasi
junkishigaki
0
320
Athenaのコスト節約を考える
junkishigaki
0
39
CloudWatch Logs Insightsをめぐるあれこれ
junkishigaki
0
170
Other Decks in Technology
See All in Technology
現場のトークンマネジメント
dak2
1
170
AWS Security Agent といっしょに脅威モデリングをやってみよう
amarelo_n24
1
200
ザ・データベース、MySQL ~ OSC 2026 Sendai ~
sakaik
0
180
[AWS Summit Japan 2026]迷っているあなたへ_小さな一歩が、やがて自分を助けてくれる
sh_fk2
1
380
AIAU_UMEMOGU_ninomiya_slide
ninomiya_ii
0
260
40代で“やっとエンジニアになれた”――閉じた学びを開き、空の青さを知る / 20260628 Naoki Takahashi
shift_evolve
PRO
4
680
複数のSONiCディストリビューションを触りながら比較してみた
sonic
0
110
サイバーエージェントにおけるAI推進戦略と変革への取り組み
shotatsuge
0
460
Chainlitで作るお手軽チャットUI
ynt0485
0
290
コミットの「なぜ」を読む
ota1022
0
120
OTel × Datadog で 「AI活用」を計測し、改善に繋げる
shihochan
2
580
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.6k
Featured
See All Featured
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
390
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
How to Ace a Technical Interview
jacobian
281
24k
Become a Pro
speakerdeck
PRO
31
6k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
200
Why Our Code Smells
bkeepers
PRO
340
58k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
560
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→