amazon-web-services - 运行 AWS Golang Lambda 时出现 exec 格式错误
问题描述
我有一个 go 应用程序,结构如下:
命令
|
报告
|
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
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 Image 的一部分,位于AWS CodeBuild上。这里应该没有环境问题,即使错误表明存在跨平台问题。
有任何想法吗?
解决方案
你必须用GOARCH=amd64 GOOS=linux
. 无论您在何处构建二进制文件,Lambda 的二进制文件都在 Amazon Linux 上运行。
所以,试试这个构建命令。
GOARCH=amd64 GOOS=linux go build handler.go
推荐阅读
- javascript - Vue 是否因为未知的隐藏字符而未显示在文件 #1 中?
- sparse-matrix - Amazon SageMaker kMeans 不会将稀疏矩阵 (csr_matrix) 作为输入,在使用密集矩阵之前还有其他选择吗?
- python-3.x - 我如何在 python 中搜索给定的句子并从该结果中获取最常用的单词?
- linux - du -hs 后如何按名称并排排序
- python - 在没有任何 Python 库的情况下,如何在 Python 中进行左和中操作?
- angularjs - angularjs中的逻辑容器
- python - Python - 球坐标有Z轴偏差
- apache - 将 phpmyadmin 安装到 VPS Ubuntu 16.04 时出现问题
- python - python - 登录页面并获取cookies
- python - Python在对列表中的数字进行排序时忽略零