タダです.
AWS Lambda を Go で書くことを久々にやっていると,そもそも初歩的なミスでコードを実行するとことまで至るのに時間がかかってしまいました.そのため,備忘録的に何をしたのかをまとめていきます.
ハンドラーの指定
Lambda ハンドラーの指定はビルド後の実行可能なバイナリファイル名を指定する必要があります.適当な名前にしておくとエラーになるため,適宜修正します.
ローカル環境が M1 で発生したエラー
コードを zip でアップロード後にテストを実行したら, fork/exec /var/task/main: exec format error: PathError
というエラーが発生しました.ハンドラーの指定も合っているのになぜ?と思って調べたら M1 環境だと zip ファイルにする前のビルドで気をつけるべきことがありました. GOARCH=amd64
をつけてビルドをする必要があり,ビルド後に zip ファイル化してテストしたらエラーが発生せずに通りました.
$ GOARCH=amd64 GOOS=linux go build ./main.go $ zip main.zip ./main
まとめ
AWS Lambda を Go で動かす時にやった初歩的ミスとその対処をまとめました.