错误:exec:\“app.handler \”:在$ PATH中找不到可执行文件”,“errorType”:“Runtime.InvalidEntrypoint”

MP3*_*P32 2 lambda amazon-web-services docker

我正在 Lambda 上测试我的代码,之前从未收到过此错误,并且在网上找不到任何解决方案。我为我的代码创建了一个 docker 镜像,所以这是我推送到 ECR 的 Docker 文件

FROM python:3.8

# Copy function code
COPY app.py ${LAMBDA_TASK_ROOT}

#Copy and install requirements
COPY requirements.txt ${LAMBDA_TASK_ROOT}
RUN pip install -r requirements.txt

ARG GITHUB_ACCESS_TOKEN
ARG TABLE_NAME
ARG AWS_ACCESS_KEY
ARG AWS_SECRET_KEY
ARG REGION

ENV GITHUB_ACCESS_TOKEN $GITHUB_ACCESS_TOKEN
ENV TABLE_NAME $TABLE_NAME
ENV AWS_ACCESS_KEY $AWS_ACCESS_KEY
ENV AWS_SECRET_KEY $AWS_SECRET_KEY
ENV REGION $REGION

# Set the CMD to the handler 
CMD [ "app.handler" ]
Run Code Online (Sandbox Code Playgroud)

这也是我的 lambda 日志中显示的完整错误

START RequestId: d691e14e-349f-45c5-a4a7-b1b98a3e88be Version: $LATEST
IMAGE   Launch error: exec: "app.handler": executable file not found in $PATH   Entrypoint: []  Cmd: [app.handler]  WorkingDir: []IMAGE Launch error: exec: "app.handler": executable file not found in $PATH   Entrypoint: []  Cmd: [app.handler]  WorkingDir: []END RequestId: d691e14e-349f-45c5-a4a7-b1b98a3e88be
REPORT RequestId: d691e14e-349f-45c5-a4a7-b1b98a3e88be  Duration: 6.80 ms   Billed Duration: 7 ms   Memory Size: 128 MB Max Memory Used: 2 MB   
RequestId: d691e14e-349f-45c5-a4a7-b1b98a3e88be Error: exec: "app.handler": executable file not found in $PATH
Runtime.InvalidEntrypoint
Run Code Online (Sandbox Code Playgroud)

Mar*_*cin 6

Lambda 镜像不是由python:3.8Docker 镜像制作的。相反,它们应该由public.ecr.aws/lambda/python:3.8. lambda 容器镜像必须经过特殊构造才能与 lambda 正确配合使用。

AWS 文档详细解释了这一点: