amazon-web-services - 运行 AWS Golang Lambda 时出现 exec 格式错误

标签 amazon-web-services go aws-lambda aws-lambda-go

我有一个 go 应用程序,结构如下:

cmd
|
报告
|
main.go

main.go 导入 internal/reports 包并有一个函数 main(),它将调用委托(delegate)给 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 Image 的一部分,在 AWS CodeBuild 上。这里应该没有环境问题,即使错误表明存在跨平台问题。

有什么想法吗?

最佳答案

您必须使用 GOARCH=amd64 GOOS=linux 进行构建。 无论您在哪里构建二进制文件,Lambda 的二进制文件都会在 Amazon Linux 上运行。

所以,试试这个构建命令。

GOARCH=amd64 GOOS=linux go build handler.go

关于amazon-web-services - 运行 AWS Golang Lambda 时出现 exec 格式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50700979/

相关文章:

amazon-web-services - AWS 上的无服务器任务调度

node.js - 如何避免重新映射通过无服务器框架从 Lambda 传回 API 网关的 header ?

cron - 参数 ScheduleExpression 无效

node.js - AWS EC2 错误 : The site can't be reached - ec2. us-west-1.compute.amazonaws.com 来不及响应。部署 Node.js

pointers - reflect.New 返回 <nil> 而不是初始化的结构

高语 : Memory allocation for type inheritance and casting in Go

http - 重定向对静态文件的请求

node.js - AWS 之上的可扩展 cron 架构

amazon-web-services - ApiGatewayV2如何通过CloudFormation设置 "Execution Role"

ios - 如何检查用户是否首次登录 AWS Cognito?