💡

Lambdaで「exec format error」が出る

2021/06/13に公開

AWS Lambdaで実行するためのコードをGoで書いて、Lambdaで動かそうとしてちょっとハマったので備忘録。

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/golang-package.html

こちらのドキュメントにある手順で、 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