You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Terraform部署Go语言AWS Lambda时遭遇exec format error问题求助

Terraform部署Go语言AWS Lambda时遭遇exec format error问题求助

各位好,我最近在用Terraform部署Go语言编写的AWS Lambda函数时碰到了一个挺棘手的exec format error问题,折腾了好一阵都没解决,来请大家帮忙排查下!

情况是这样的:我用Terraform管理所有AWS资源(包括Lambda、API Gateway),部署JavaScript写的Lambda完全正常,但部署Go语言的Lambda时,调用接口就会返回执行格式错误。我怀疑是二进制架构的问题,但已经按照AWS Lambda要求的架构编译了,甚至换成provided.al2 runtime还是报同样的错误,Terraform的代码逻辑应该没问题,毕竟JS函数能正常跑起来。

下面是一些调试相关的信息:

目录结构

  • infra
    • helloGO
      • main.go
      • main(编译后的二进制文件)
    • terraform
      • main.tf
      • hello.zip(包含main二进制文件的压缩包)

Terraform Lambda资源配置

resource "aws_lambda_function" "hello" {
  function_name = "hello"
  filename      = "../hello.zip" // 从根目录引用hello.zip文件
  runtime       = "go1.x" # 之前测试nodejs16.x是正常的
  handler       = "main"
  role          = aws_iam_role.hello_lambda_exec.arn
  timeout       = 3
}

编译命令

我用以下命令编译Go代码并打包成zip:

buildGO: cleanGO
    GOOS=linux GOARCH=amd64 CGO_ENABLED=0 cd ./helloGo/ && go build -o ./ main.go
    cd ./helloGo/ && chmod +x main
    cd ./helloGo/ && zip ../hello.zip main

这里我确认amd64对应Lambda使用的x86_64架构,也试过网上提到的相关编译方案,但还是出现“二进制不可执行”的错误提示。

有没有大佬遇到过类似问题?求指点!

备注:内容来源于stack exchange,提问作者ibrahim jamil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 13:23:04