when to use ECR in lambda ?
I want to host a python code based service in Lambda behind API GW. AFAIK, there are 2 approaches to deploy the code to Lambda.
- simply zip the code and upload to S3 and link with the lambda function
- create ECR images and deploy it with lambda function.
Are there any guidance on when to use ECR ? and when to use simple code zipping ? What are the pros and cons of each approach ? Some leads on this topic will be super helpful.
You usually will use the container option in one of the following two cases: 1. You need a function with a package size larger than 250MB unzipped (containers support 10GB) 2. You are already using containers in other places and would like to use the same tools you are using for containers
In other cases I would just use the zip file approach.
You could use a container for all functions, but note that you don't just take your old code and run it in a container. When running in Lambda you need to include the Lambda handler, which will be invoked when the function is triggered. You will need to move to stateless, etc.
It also comes down to how you want to manage language runtimes. In AWS Lambda, container image packaged functions are similar to Zip files, but the customer is responsible for more artifacts, including the runtime, in the container image. If you take advantage of container packaging, the shared responsibility model for Lambda shifts, with the customer now being responsible for managing from the base image up. Since container images contain language runtime libraries, using a container image to package Lambda functions prevents Lambda from automatically updating the language runtime.
Can we just simply use Container for all lambda as a default pattern ? Assume a case, the team uses containers for all old services. What will the value/advantage in using zip for new service or refactor the container based app to code-zip ?
Relevant questions
A lambda function to delete old archive files in s3 bucket
asked 3 years agoHow to add python libraries to lambda using the CDK?
Accepted Answerasked 2 years agoHow to Use CodeBuild and CodeDeploy to Deploy Lambda to Different Environments
asked 3 months agoLambda+ALB vs Lambda+API GW
Accepted Answerasked 4 months agoLambda error code
asked 2 years agoHow to deploy 4 lambdas in typescript using a code pipeline ?
asked 2 months agoMulti-region lambda deployment with code stored in S3 bucket
Accepted AnswerHow to create a lambda layer for a CodeStar project?
asked 3 years agowhen to use ECR in lambda ?
asked a month agoHow to provide unique filename to each file in each event in aws lambda python?
asked 2 months ago
Can we just simply use Container for all lambda as a default pattern ? Assume a case, the team uses containers for all old services. What will the value/advantage in using zip for new service or refactor the container based app to code-zip ?