[Terraform] CloudFront のオリジンに Lambda Function URL をセットする
2024-11-21
Lambda 関数を作成し、その Function URL を CloudFront のオリジンにセットしてみる
構成
・CloudFront ・CloudFront OAC ・Lambda (Web Adapter) ・アプリケーション (Go)
アプリケーション
アプリケーションは Go で作り Lambda Web Adapter を被せる
</>
package main
import (
"net/http"
"github.com/labstack/echo/v4"
)
func main() {
e := echo.New()
e.GET("/", func(c echo.Context) error {
return c.String(http.StatusOK, "Hello")
})
// Lambda Web Adapter はデフォルトで 8080 番ポートにリクエストを送る
e.Logger.Fatal(e.Start(":8080"))
}
Lambda Web Adapter
Lambda Web Adapter を使う際は、Docker で関数を作るのがメジャーだと思う。 だが、AWS は Lambda Web Adapter 用の Lambda Layer を公開しており、それをアタッチしたところ Zip 形式でも動いた。
Terraform
</>
[注意] POST or PUT はできない
CloudFront OAC がリクエストボディのハッシュ計算に対応していない様子。 POST or PUT を叩くとエラーが返ってくる。 ワークアラウンドはいくつかあるが、プロダクションでの使用は要検討。