Lambda 関数 URL をローカル環境でエミュレートするツールを作った
Lambda 関数 URL をローカル環境でエミュレートするツールを作りました。
AWS 公式の開発ツールである AWS Lambda Runtime Interface Emulator (RIE) と連携して動作します。
主なユースケースとしてコンテナで動かすことを想定しているので、Docker Hub にイメージを公開しています。
なぜ作ったか
結論から言うと Lambda 関数 URL + コンテナイメージを利用した Lambda 関数のローカル環境での動作確認を無料で行いたかったからです。
ローカル環境で AWS のサービス群をエミュレートするツールとして LocalStack があり、Lambda 関数 URL もサポートされています。
ただし、LocalStack では .zip ファイルアーカイブを利用した Lambda 関数 を動かすのは無料版でいけますが、コンテナイメージを利用した Lambda 関数 を動かすには有料版が必要でした。(Lambda 自体は無料だが、コンテナイメージを使うための ECR が有料)
そのため、Lambda 関数 URL + コンテナイメージを利用した Lambda 関数のローカル環境での動作確認を無料で行うには自前で Lambda 関数 URL のエミュレータを作る必要がありました。
使い方
使い方は GitHub の README をご覧ください。
特に Docker Compose を使って RIE と連携させるのが便利で良いと思います。
Docker Compose を使った例は example ディレクトリ にあります
実装について
Go で書かれており、初期実装はほぼ標準ライブラリだけで 100 行程度のコードです。
以下の公式ドキュメントの Lambda 関数 URL のリクエスト・レスポンスのペイロード形式や LocalStack の Lambda 関数 URL 部分のコードを参考に実装しました。
自分の用途に必要な仕様を実装しただけなので、足りない仕様や不備があれば Issue などで教えていただけると嬉しいです。
まとめ
Lambda 関数 URL をローカル環境で動かしたい時、
- .zip ファイルアーカイブを利用する場合は無料なので LocalStack を使うと良いでしょう
- コンテナイメージを利用して、有料でもいい場合は LocalStack を使うと良いでしょう
- コンテナイメージを利用して、無料にしたい場合は本記事で紹介したツールをお試しください
Discussion