Ошибка формата exec при запуске AWS Golang Lambda

У меня есть приложение 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, на AWS CodeBuild. Здесь не должно быть проблем со средой, хотя ошибка предполагает кроссплатформенную проблему.

Есть идеи?

1 ответ

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

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

GOARCH=amd64 GOOS=linux go build handler.go

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

Другие вопросы по тегам