使用AWS Lambda-Docker遇‘lambda-entrypoint.sh: exec format error’错误求助
问题解决:Lambda Docker镜像触发exec format error报错
错误核心诱因
这个报错主要来自两个常见问题:
- 架构不兼容:Lambda默认使用x86_64运行环境,如果你用ARM架构机器(比如M系列Mac)直接构建镜像,生成的ARM版本镜像上传到Lambda后会出现执行格式不匹配的问题。
- Dockerfile语法错误:你的CMD指令用了单引号,Dockerfile中字符串必须用双引号包裹,单引号会被当成命令的一部分,导致Lambda无法识别正确的入口函数。
分步修复方案
1. 修正Dockerfile的CMD语法
把CMD里的单引号改成双引号,同时删掉重复的pip安装命令:
# syntax=docker/dockerfile:1 FROM public.ecr.aws/lambda/python:3.12 # Copy requirements.txt and function code COPY requirements.txt ${LAMBDA_TASK_ROOT} COPY lambda_function.py ${LAMBDA_TASK_ROOT} # 合并重复的pip安装步骤,减少构建耗时 RUN pip3 install --no-cache-dir -r ./requirements.txt CMD ["lambda_function.lambda_handler"]
2. 强制构建x86_64架构镜像
如果你的本地机器是ARM架构,构建镜像时必须指定目标平台为x86_64:
docker build --platform linux/amd64 -t lambda-video-synth .
推送镜像到ECR时,也确保推送的是x86_64版本的镜像。
3. 补充系统依赖(针对opencv和moviepy)
opencv-python和moviepy依赖系统级库,比如ffmpeg、libgl1等,建议在Dockerfile中添加系统包安装步骤,避免后续运行时出现依赖缺失:
# 在FROM指令后添加系统依赖安装 RUN yum install -y ffmpeg libgl1 mesa-libGL
验证流程
- 重新构建镜像并推送到ECR
- 在Lambda控制台测试函数,确认报错消失
- 测试图片+音频合成的核心功能,验证依赖正常加载
内容的提问来源于stack exchange,提问作者JouseJG
相关产品推荐
相关产品推荐

