无法修复Lambda容器报错:fork/exec /lambda-entrypoint.sh: exec format error
解决Lambda容器镜像Runtime.InvalidEntrypoint(exec格式错误)问题
问题背景
使用AWS Lambda官方Python基础镜像构建容器镜像时,手动在Dockerfile中指定ENTRYPOINT ["/lambda-entrypoint.sh"]后,测试运行出现exec格式错误,无法正常执行Lambda函数。
相关文件及报错信息
Dockerfile内容
# Use the official Python runtime as a parent image FROM public.ecr.aws/lambda/python:3.11 WORKDIR /var/task COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY service /var/task/service COPY lambda_function.py . COPY *.py . CMD ["lambda_function.lambda_handler"] ENTRYPOINT ["/lambda-entrypoint.sh"]
构建命令
docker build --platform linux/amd64 -t 123456.dkr.ecr.us-east-1.amazonaws.com/cdk-hnb659fds-container-assets-7890-us-east-1:my-user-metrics6 .
测试报错输出
{ "errorType": "Runtime.InvalidEntrypoint", "errorMessage": "RequestId: 8ba540c9-9877-4a90-b094-e2836fd0bbc4 Error: fork/exec /lambda-entrypoint.sh: exec format error" }
解决方案
1. 移除手动指定的ENTRYPOINT
AWS Lambda官方基础镜像(如public.ecr.aws/lambda/python:3.11)已经默认配置了正确的ENTRYPOINT,无需手动添加。手动覆盖该配置会破坏镜像的运行时结构,导致exec格式不兼容。
修正后的Dockerfile:
# Use the official Python runtime as a parent image FROM public.ecr.aws/lambda/python:3.11 WORKDIR /var/task COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY service /var/task/service COPY lambda_function.py . COPY *.py . CMD ["lambda_function.lambda_handler"]
2. 确认架构一致性
构建时指定--platform linux/amd64是正确的(Lambda默认使用x86_64架构),但需确保本地Docker环境支持该平台模拟,或直接在x86_64主机上构建,避免跨架构二进制不兼容问题。
验证步骤
- 使用修正后的Dockerfile重新构建镜像
- 推送镜像至ECR后,在Lambda控制台测试函数,或本地使用
docker run命令模拟Lambda运行环境验证。
内容的提问来源于stack exchange,提问作者WestCoastProjects
相关产品推荐
相关产品推荐

