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

AWS Lambda go1.x运行时停用后Go应用部署失败求助

解决AWS Lambda Go函数的Runtime.InvalidEntrypoint/exec format error错误

错误原因

exec format error的核心问题是构建的Go二进制文件架构与Lambda运行时架构不匹配:你配置了Lambda使用arm64架构,但构建的二进制是amd64(x86_64)架构,导致Lambda无法执行该二进制文件。


针对Zip包部署的修复方案

修改构建命令,将GOARCH参数改为arm64,匹配Lambda的架构配置:

GOARCH=arm64 GOOS=linux CGO_ENABLED=0 go build -tags lambda.norpc -o bootstrap cmd/test/main.go
zip test.zip bootstrap

保持Lambda配置不变:

handler       = "bootstrap"
runtime       = "provided.al2"
architectures = ["arm64"]

针对Docker部署的修复方案

有两种可选方案:

方案1:构建arm64架构的镜像

可以通过两种方式实现:

方式A:用Docker buildx跨平台构建

docker buildx build --platform linux/arm64 -t lambda-go-function .

方式B:修改Dockerfile使用arm64基础镜像

FROM public.ecr.aws/lambda/provided:al2-arm64 as build
# 安装编译器
RUN yum install -y golang
RUN go env -w GOPROXY=direct
# 缓存依赖
ADD go.mod go.sum ./
RUN go mod download
# 构建二进制
ADD . .
RUN go build -tags lambda.norpc -o /main cmd/test/main.go

# 复制到干净镜像
FROM public.ecr.aws/lambda/provided:al2-arm64
COPY --from=build /main /main
ENTRYPOINT [ "/main" ]

方案2:调整Lambda架构为amd64

修改Lambda配置,将架构改为amd64,无需修改构建命令或Dockerfile:

handler       = "bootstrap"
runtime       = "provided.al2"
architectures = ["amd64"]

验证方法

构建完成后,可通过以下命令查看二进制文件的架构,确认是否与Lambda架构匹配:

# 检查Zip包的bootstrap文件
file bootstrap
# 检查Docker镜像内的main文件(先启动临时容器)
docker run --rm -it <你的镜像名> file /main

内容的提问来源于stack exchange,提问作者duggajj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 04:10:27