AWS Lambdaをローカルで爆速開発!面倒なデプロイともおさらばです
こんな悩みありませんか?
「Lambda関数を書いた!よし、デプロイして動作確認...あれ?バグった...修正してまたデプロイ...」
このデプロイ地獄、私も経験しました(遠い目)。でも大丈夫!AWSの公式Dockerイメージを使えば、あなたのPCでサクッとLambdaを動かせちゃうんです。
今回の主役:AWS Lambda用Dockerイメージ
まずはAmazonが太っ腹に公開している Docker イメージたち から好きな言語のイメージを選びましょう。Node.js、Python、Java...選り取り見取りです!
今回は例としてNode.jsを使いますが、他の言語でもほぼ同じ手順でイケます👍
セットアップ:Docker Composeでお手軽構築
まずはcompose.yaml
を作りましょう。コピペでOKです!
services:
lambda-local: # 好きな名前をどうぞ!
image: public.ecr.aws/lambda/nodejs:20.2024.11.22.14
command: [ "index.handler" ]
restart: always
volumes:
- ./project_dir:/var/task
ports:
- "9000:8080"
logging:
options:
max-size: "5m"
max-file: "10"
ここでのポイント(要チェック!)
-
command
のindex.handler
は「index.js
の中のexports.handler
関数を実行してね」という意味です -
volumes
でプロジェクトのフォルダをコンテナにマウント。これで開発中のコードが見えるようになります - ポートは
9000:8080
にしてますが、もちろん変更OK!(ただし右側の8080は固定です🙇♂️)
実行してみよう!
お待ちかね、実行コマンドです:
curl "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{"payload":"hello world!"}'
URLが「なんじゃこりゃ」という感じですが、気にしない気にしない!これで動きます😅
開発中の注意点(これ大事!)
-
コードの変更を反映したいとき
- コンテナの再起動が必要です
-
docker compose restart lambda-local
でOK! - ホットリロード欲しい...(切実)
-
デバッグが超ラク
- ログも即確認:
docker compose logs -f lambda-local
- エラーもすぐわかる!(AWS コンソールとにらめっこよりずっといい)
- ログも即確認:
-
本番環境との違い
- IAMロールとかは別途設定が必要です
- でも基本的な動作確認には困りません!
これがローカル開発のいいところ!
-
爆速開発🚀
- デプロイ待ち?そんなの知らない!
- 修正→実行→確認のサイクルが速すぎて笑えます
-
お財布に優しい💰
- AWS料金とはおさらば
- 特に「えいや!」で試したいときに最高です
-
オフラインでも開発OK!
- 新幹線の中でも開発できちゃう
- カフェのWi-Fiが死んでても平気!
さいごに
Lambda開発、実はローカルでもできるんです。しかも公式イメージなので、変な罠もありません。
この方法を使えば、開発効率が段違い。同僚に教えたら「え!そんなことできるの!?」と驚かれました(ニヤリ)。
みなさんもぜひ試してみてください!きっと開発生活が変わるはず...✨
参考リンク
おまけ
この記事を最後まで読んでくれた方、ありがとうございます!もし「いいね」していただけたら、次の記事のモチベーションになります😊