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 年前檢視次數 6108 次
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 年前

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南