Search code examples
amazon-web-servicesgoaws-lambdaaws-lambda-go

exec format error when running AWS Golang Lambda


I have a go application, structured like this:

cmd
|
reports
|
main.go

main.go imports internal/reports package and has a single function, main(), which delegates call to aws-lambda-go/lambda.Start() function.

Code is build running the commands (snippet):

cd internal/reports && go build handler.go
cd ../..
go build -o reports ../cmd/reports/main.go && chmod +x reports && zip reports.zip reports

reports.zip is uploaded to AWS Lambda, which in turns throws an error when Test button is pressed:

{
  "errorMessage": "fork/exec /var/task/reports: exec format error",
  "errorType": "PathError"
}

reports is set as Lambda's Handler.

Also, code is build on Ubuntu 14.04 machine, as a part of aws/codebuild/ubuntu-base:14.04 Docker Image, on AWS CodeBuild. There should be no environment issues here, even though the error suggests a cross-platform problem.

Any ideas?


Solution

  • The issue is that main() function is not declared in main package, which is mandatory by Golang language spec