Ошибка формата 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
пакет, который является обязательным по спецификации языка Голанг