Problem starting Docker image as lambda function source

0

I am trying to use a container image as the source for a lambda, but am not able to start the container.

No matter what I set the CMD to, I get entrypoint requires the handler name to be the first argument

My Dockerfile looks something like:

FROM public.ecr.aws/lambda/python:3.8
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY custom_module ${LAMBDA_TASK_ROOT}
COPY app.py ${LAMBDA_TASK_ROOT}
CMD \[app.lambda_handler]

The function to run in app.py is definitely called lambda_handler, and I've run out of things to change.

Anyone have any thoughts?

Edited by: arogers on Jan 29, 2021 4:52 PM

arogers
已提问 3 年前6106 查看次数
3 回答
0

arogers wrote:
I am trying to use a container image as the source for a lambda, but am not able to start the container.

No matter what I set the CMD to, I get entrypoint requires the handler name to be the first argument

My Dockerfile looks something like:

FROM public.ecr.aws/lambda/python:3.8
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY custom_module ${LAMBDA_TASK_ROOT}
COPY app.py ${LAMBDA_TASK_ROOT}
CMD \[app.lambda_handler]

The function to run in app.py is definitely called lambda_handler, and I've run out of things to change.

Anyone have any thoughts?

Edited by: arogers on Jan 29, 2021 4:52 PM
arogers wrote:
I am trying to use a container image as the source for a lambda, but am not able to start the container.

No matter what I set the CMD to, I get entrypoint requires the handler name to be the first argument

My Dockerfile looks something like:

FROM public.ecr.aws/lambda/python:3.8
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY custom_module ${LAMBDA_TASK_ROOT}
COPY app.py ${LAMBDA_TASK_ROOT}
CMD \[app.lambda_handler]

The function to run in app.py is definitely called lambda_handler, and I've run out of things to change.

Anyone have any thoughts?

Edited by: arogers on Jan 29, 2021 4:52 PM
arogers wrote:
I am trying to use a container image as the source for a lambda, but am not able to start the container.

No matter what I set the CMD to, I get entrypoint requires the handler name to be the first argument

My Dockerfile looks something like:

FROM public.ecr.aws/lambda/python:3.8
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY custom_module ${LAMBDA_TASK_ROOT}
COPY app.py ${LAMBDA_TASK_ROOT}
CMD \[app.lambda_handler]

The function to run in app.py is definitely called lambda_handler, and I've run out of things to change.

Anyone have any thoughts?

Edited by: arogers on Jan 29, 2021 4:52 PM
Hey arogers,

Here is what I have as a Dockerfile that is working for me, this may work for you too. However, I'm currently having issues with OpenCV.

FROM public.ecr.aws/lambda/python:3.8  
  
COPY requirements.txt ./  
  
RUN pip install --upgrade pip  
RUN pip install -r requirements.txt  
  
COPY . ./  
CMD \[ "app.handler" ]  

Edited by: samatvery on Feb 3, 2021 12:23 PM

Edited by: samatvery on Feb 3, 2021 12:23 PM

已回答 3 年前
0

Can you please try placing your app.handler inside quotes ["app.handler"] instead of keeping it without quotes [app.lambda_handler] ?
I believe docker needs between double quotes and it worked for me.

已回答 3 年前
0

Hi @samatvery, I tried customising the base image but it always fails, refer to my stackoverflow question here: https://stackoverflow.com/questions/66369212/aws-lambda-is-unable-to-find-app-handler-custom-docker-image

已回答 3 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则