βοΈ π π
You can deploy your Lambda function code as a container image. AWS provides the following resources to help you build a container image for your Python function:
AWS base images for Lambda
- These base images are preloaded with a language runtime and other components that are required to run the image on Lambda. AWS provides a Dockerfile for each of the base images to help with building your container image.
Open-source runtime interface clients
- If you use a community or private enterprise base image, add a runtime interface client to the base image to make it compatible with Lambda.
Whatβs In This Document
- Create Docker image container
- Create
app.py
as lambda handler - Build and push the image to ECR
- Create Lambda container image
- Test the lambda function
π Create Docker image container
1. Create an image from an alternative base image
FROM python:3.8-buster
RUN apt-get update && \
apt-get install -y python3-pip && \
pip3 install awslambdaric
COPY app.py ./
ENTRYPOINT [ "/usr/local/bin/python", "-m", "awslambdaric" ]
CMD ["app.handler"]
2. Create an image from AWS base image
FROM amazon/aws-lambda-python:3.8
COPY app.py ./
CMD ["app.handler"]
π Create app.py
as lambda handler
import sys
def handler(event, context):
return 'Hello from AWS Lambda using Python' + sys.version + '!'
π Build and push the image to ECR
aws ecr get-login-password --region ap-southeast-1 | docker login --username AWS --password-stdin 111111111111.dkr.ecr.ap-southeast-1.amazonaws.com
docker build -t pythonlambda .
docker tag pythonlambda:latest 111111111111.dkr.ecr.ap-southeast-1.amazonaws.com/pythonlambda:latest
docker push 111111111111.dkr.ecr.ap-southeast-1.amazonaws.com/pythonlambda:latest
π Create Lambda container image
π Test the lambda function
1. Invoke lambda function
- Start container
docker rm -f lambdaimagetest docker run -d --name lambdaimagetest -it pythonlambda:latest bash docker exec -it lambdaimagetest bash
- Invoke lambda function
β‘ $ aws lambda invoke --function-name python-lambda-image --region ap-southeast-1 outfile { "StatusCode": 200, "ExecutedVersion": $LATEST" } β‘ $ cat outfile "Hello from AWS Lambda using Python3.8.5 (default, Aug 5 2020, 08:22:02) \n[GCC 8.3.0]!"
2. Call lambda API from local container
- This should be performed from AWS image base
- Run container
β‘ $ docker run -d --name testapi -p 9000:8080 pythonlambda:latest
- Call API
β‘ $ curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}' "Hello from AWS Lambda using Python3.8.6 (default, Dec 16 2020, 01:05:15) \n[GCC 7.3.1 20180712 (Red Hat 7.3.1-11)]!"
- Deploy new image
- Invoke lambda function
β‘ $ aws lambda invoke --function-name python-lambda-image --region ap-southeast-1 outfile { "StatusCode": 200, "ExecutedVersion": "$LATEST" } β‘ $ cat outfile "Hello from AWS Lambda using Python3.8.6 (default, Dec 16 2020, 01:05:15) \n[GCC 7.3.1 20180712 (Red Hat 7.3.1-11)]!"
Mirror:
Read More
- Pelican-resume with docker-compose and AWS + CDK
- Using Helm Install Botkube Integrate With Slack On EKS
- Ansible AWS EC2 Dynamic Inventory Plugin
- How To List All Enabled Regions Within An AWS account
- Using AWS KMS In AWS Lambda
- Create AWS Backup Plan
- Techniques For Writing Least Privilege IAM Policies
- EKS Persistent Storage With EFS Amazon Service
- Create k8s Cronjob To Schedule Delete Expired Files
- Amazon ECR - Lifecycle Policy Rules
- Connect Postgres Database Using Lambda Function
- Using SourceIp in ALB Listener Rule
- Amazon Simple Systems Manager (SSM)
- Invalidation AWS CDN Using Boto3
- Create AWS Lambda Function Triggered By S3 Notification Event
- CI/CD Of Invalidation AWS CDN Using Gitlab Pipeline
- Create CodeDeploy
- Gitlab Pipeline With AWS Codedeploy
- Create AWS-CDK image container