Skip to main content

Lambda Function Container Image: Python

Sourcecode

def handler(event, context):  
# your code

Dockerfile

FROM public.ecr.aws/lambda/python:3.8  
RUN yum -y install some-stuff
COPY app.py ${LAMBDA_TASK_ROOT}
RUN pip3 install --target "${LAMBDA_TASK_ROOT}" dependencies
CMD [ "app.handler" ]

Testing at local

# go to folder that contains Dockerfile and app.py  
docker build -t ecr-repository-name .
docker run --rm -v "$PWD":/tmp -p 9001:8080 ecr-repository-name
curl -XPOST "http://localhost:9001/2015-03-31/functions/function/invocations" -d '{}'

ECR Operations

Required permissions to do ECR operations

"ecr:CreateRepository",  
"ecr:BatchGetImage",
"ecr:GetAuthorizationToken",
"ecr:UploadLayerPart",
"ecr:PutImage",
"ecr:BatchCheckLayerAvailability",
"ecr:CompleteLayerUpload",
"ecr:GetDownloadUrlForLayer",
"ecr:InitiateLayerUpload"
  • Create repository
  • Build image (We did already before)
aws ecr get-login-password --region location | docker login --username AWS --password-stdin account-id.dkr.ecr.location.amazonaws.com  
docker tag ecr-repository-name:latest account-id.dkr.ecr.location.amazonaws.com/ecr-repository-name:latest
docker push account-id.dkr.ecr.location.amazonaws.com/ecr-repository-name:latest

Create Lambda Function

Create Function > Container Image > Fill the required fields > Select container image URI > Finalize Create Function
step

Unknown (2023-09-25 22:42:17)
#aws #docker #ecr #lambda #python