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

使用Docker镜像部署Lambda时遇Runtime.InvalidEntrypoint错误求助

解决Lambda Docker镜像的Runtime.InvalidEntrypoint(exec format error)错误

这个错误的核心原因是CPU架构不兼容:本地构建Docker镜像的架构(比如Apple Silicon的arm64)和AWS Lambda默认使用的x86_64架构不匹配,导致Lambda无法执行镜像内的二进制运行时文件。以下是具体解决方案:

方案1:强制构建x86_64架构的镜像(适配Lambda默认环境)

修改Dockerfile

在所有FROM指令中添加--platform linux/amd64,强制构建x86_64架构的镜像:

FROM --platform=linux/amd64 public.ecr.aws/lambda/nodejs:18 as builder
WORKDIR /usr/app
COPY package.json index.ts ./
RUN npm install
RUN npm run build

FROM --platform=linux/amd64 public.ecr.aws/lambda/nodejs:18
WORKDIR ${LAMBDA_TASK_ROOT}
COPY --from=builder /usr/app/dist/* ./
CMD ["index.handler"]

或者在CDK中指定构建平台

如果不想修改Dockerfile,可以在DockerImageCode.fromImageAsset中添加构建参数:

code: aws_lambda.DockerImageCode.fromImageAsset(
    path.join(__dirname, '..', '..', 'functions', 'fakedata'),
    {
        platform: 'linux/amd64'
    }
),

方案2:让Lambda使用arm64架构(利用Graviton2优势)

如果本地架构是arm64,也可以直接配置Lambda使用arm64运行时,避免架构转换:

const fakeFunction = new aws_lambda.DockerImageFunction(this, 'FakerFunction', {
    code: aws_lambda.DockerImageCode.fromImageAsset(
        path.join(__dirname, '..', '..', 'functions', 'fakedata')
    ),
    architecture: aws_lambda.Architecture.ARM_64 // 添加这一行
});

额外检查点

  • 确认npm run build正确生成了dist/index.js文件,且文件中确实导出了handler函数
  • 验证Docker镜像构建完成后,${LAMBDA_TASK_ROOT}目录下存在index.js文件(可本地运行镜像查看)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:55:22