Ошибка формата exec при запуске AWS Golang Lambda - PullRequest
0 голосов
/ 05 июня 2018

У меня есть приложение go, структурированное так:

cmd|отчеты|main.go

main.go импортирует пакет internal/reports и имеет единственную функцию main (), которая делегирует вызов функции aws-lambda-go/lambda.Start().

Код выполняется с помощью команд (фрагмент)):

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 загружается в AWS Lambda, что в свою очередь выдает ошибку при нажатии кнопки Test:

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

reports устанавливается как лямбдаHandler.

Кроме того, код собран на компьютере с Ubuntu 14.04, как часть aws/codebuild/ubuntu-base:14.04 Docker Image, на AWS CodeBuild .Здесь не должно быть проблем со средой, даже если ошибка указывает на кросс-платформенную проблему.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Вы должны построить с GOARCH=amd64 GOOS=linux.Где бы вы ни создавали свой двоичный файл, двоичный файл для Lambda запускается в Amazon Linux.

Итак, попробуйте эту команду сборки.

GOARCH=amd64 GOOS=linux go build handler.go

0 голосов
/ 05 июня 2018

Проблема в том, что функция main () не объявлена ​​в пакете main, что является обязательным для Golang спецификация языка

...