Golang×Lambdaでのエラー
LambdaとAPI GatewayでAPIを作成していて、新しく追加したLambdaの実行がエラーになることがあったので、備忘録として残しておきます。
発生したエラー
新しく追加した関数だけ動かないので、えぇえ!??となりました。
fork/exec /var/task/bin/src/lambda/****/***/Handler: exec format error: PathError
null
原因
すごく単純なミスで、かつLambda特有のミスでした・・!
package package_name
ここのpackage_nameをLambdaではmainにしないといけないので忘れずに・・!
普段Lambdaでやらず、Goland上でファイル作成すると自動的にディレクトリ名と同名のpackage名にしてくれるので全然違和感を感じませんでした・・!(むしろ普段はこれが正しいですね・・)
まぁLambdaの場合は、1エンドポイントに1関数を書いているので、main()関数を何個も書くのですね・・!
普段は起点を1個書いて終わりなので忘れがち・・。
(たまにLambda使うとまたハマりそうなので、記事としてメモ・・)
修正内容
package_nameを直すだけですね!
package package_name
↓
package main
全体
修正前
package package_name
import (
"github.com/*****/****"
...
)
func Handler(ctx context.Context) (Response, error) {
...
...
return resp, nil
}
func main() {
lambda.Start(Handler)
}
修正後
package main
import (
"github.com/*****/****"
...
)
func Handler(ctx context.Context) (Response, error) {
...
...
return resp, nil
}
func main() {
lambda.Start(Handler)
}
まとめ
今回は、Golang×Lambdaで発生したエラーの対処方法でした!
Golandからファイル作成していると、package名を自動で決めてくれるので便利ですが、Lambdaの時はまたハマりそうですね!
その時は、エラー文とこの記事の内容が参考になれば良いです。
コメント