我有一个 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
按钮被按下:
{
"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 代码构建。即使错误表明存在跨平台问题,这里也不应该存在环境问题。
有任何想法吗?
你必须用GOARCH=amd64 GOOS=linux
。
无论您在何处构建二进制文件,Lambda 的二进制文件都在 Amazon Linux 上运行。
所以,尝试这个构建命令。
GOARCH=amd64 GOOS=linux go build handler.go
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)