Go
lambda
alpine

alpineのイメージでAWS Lambda用のgoバイナリをビルドしたらPathErrorになった話

タイトルままですが

AWS Lambda での Go サポート開始
を見て、喜び勇んで、いままでapexでデプロイしていたツール系のlambdaを書き換えました。

いざデプロイして実行してみたところエラーが

fork/exec /var/task/bin/main: no such file or directory: PathError

デプロイに使ったzipの中を何回見てもそこにバイナリあるし、なんだろう。。。

早々に諦めて内村さまぁ〜ずの人間ドッグ2017を見ている時にふと気が付きました。

_人人人人人人人人_
> dynamic link <
 ̄Y^Y^Y^Y^Y^Y^Y ̄

ビルドにはgo-alpineのイメージを利用していました。
これはnetパッケージ周りのアレだろうと思い下記のようにビルドコマンドを変更してデプロイ。。。!

GOOS=linux go build -x -ldflags '-s -w' -o ./bin/main main.go
GOOS=linux go build -x -ldflags '-d -s -w' -a -tags netgo -installsuffix netgo -o ./bin/main main.go

リクエスト実行。。。!

_人人人人人_
> 200 OK <
 ̄Y^Y^Y^Y ̄

ちょっと古いですが同じような感じのissueが。

同僚がやっているRubber Duck Debuggingみたいなかんじで
僕は内村さまぁ〜ずタイムをもうけようとおもいました。