💡
Lambdaで「exec format error」が出る
AWS Lambdaで実行するためのコードをGoで書いて、Lambdaで動かそうとしてちょっとハマったので備忘録。
こちらのドキュメントにある手順で、 GOOS=linux go build main.go
を実行し、吐き出されたバイナリをzipコマンドでアップロードして、Lambdaの管理画面から手動で実行してみたところ fork/exec /var/task/main: exec format error
というエラーが。
なんでかなーと思ってたのですが、実行環境がApple SiliconのMacだったためにarm64アーキテクチャ用のバイナリが生成されてしまって実行できていなかったようです。(という理解をしているが、この辺の低レイヤーなところの話は本当にさっぱりなので間違っていたら教えてください。)
ビルド時の環境変数に GOARCH=amd64
を足して GOARCH=amd64 GOOS=linux go build main.go
としてあげて吐き出されたバイナリをデプロイしたら無事に実行できました。めでたし。
Discussion