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

使用Zappa+Docker时遇handler未找到错误的技术求助

解决方案

错误原因

handler.lambda_handler是Python模块中的函数,并非可执行文件,直接将其作为Docker的CMD命令会导致容器无法找到对应可执行程序,从而触发"executable file not found"错误。

修复步骤

1. 安装AWS Lambda Runtime Interface Client

自定义Python镜像需要该工具处理Lambda的请求交互,在python-deps阶段添加依赖安装:

# 在python-deps阶段的pipenv安装命令中添加awslambdaric
RUN PIPENV_VENV_IN_PROJECT=1 pipenv install --deploy awslambdaric

2. 修正CMD命令

将原CMD替换为通过Runtime Interface Client调用Python函数的格式:

CMD ["awslambdaric", "handler.lambda_handler"]

该命令会借助awslambdaric工具,正确识别并调用handler.py中的lambda_handler函数,符合Lambda Docker镜像的运行规范。

3. 验证文件路径

可在Dockerfile中添加验证步骤,确保handler.py被正确复制到目标目录:

# 在复制文件到FUNCTION_DIR后添加
RUN ls -la $FUNCTION_DIR

完整修正后的Dockerfile

FROM python:3.8 as base

# Setup env
ENV LANG C.UTF-8
ENV LC_ALL C.UTF-8
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONFAULTHANDLER 1

FROM base AS python-deps

# Install pipenv and compilation dependencies
RUN pip install pipenv
RUN python -m pip install --upgrade pip
RUN apt-get update && apt-get install -y --no-install-recommends gcc

RUN apt-get install postgresql-client libjpeg-dev -y
RUN apt-get install gcc libc-dev musl-dev zlib1g zlib1g-dev -y

# Install python dependencies in /.venv
COPY Pipfile .
COPY Pipfile.lock .
RUN PIPENV_VENV_IN_PROJECT=1 pipenv install --deploy awslambdaric

FROM base AS runtime

# Copy virtual env from python-deps stage
COPY --from=python-deps /.venv /.venv
ENV PATH="/.venv/bin:$PATH"

ARG FUNCTION_DIR="/var/task/"
COPY ./ $FUNCTION_DIR

# Grab the zappa handler.py and put it in the working directory
RUN ZAPPA_HANDLER_PATH=$( \
    python -c "from zappa import handler; print (handler.__file__)" \
    ) \
    && echo $ZAPPA_HANDLER_PATH \
    && cp $ZAPPA_HANDLER_PATH $FUNCTION_DIR

CMD ["awslambdaric", "handler.lambda_handler"]

运行验证

重新构建并运行容器:

docker build -t lambda-docker-flask:latest .
docker run -p 9000:8080 lambda-docker-flask:latest

可通过以下命令测试服务是否正常:

curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'

此外,请确保zappa_settings.json等配置文件已被正确复制到容器中,虚拟环境依赖完整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:33:10