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
gefragt vor 3 Jahren6108 Aufrufe
3 Antworten
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

beantwortet vor 3 Jahren
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.

beantwortet vor 3 Jahren
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

beantwortet vor 3 Jahren

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen