我有一个Go应用程序,结构如下:
cmd
|
reports
|
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
按钮时,AWS Lambda会抛出一个错误:
reports.zip
上传到AWS Lambda,当按下Test
按钮时,AWS Lambda会抛出一个错误:
{
"errorMessage": "fork/exec /var/task/reports: exec format error",
"errorType": "PathError"
}
reports
被设置为 Lambda 的 Handler
。
此外,该代码是在 Ubuntu 14.04 机器上构建的,作为 aws/codebuild/ubuntu-base:14.04
Docker 镜像的一部分,在 AWS CodeBuild 上。尽管错误提示存在跨平台问题,但这里不应该有任何环境问题。
有什么想法吗?
GOARCH=amd64
这一部分。如果你使用的是新款Mac M1芯片,这是必需的。 - Dominic O'Connor