DEV Community

Karthi Mahadevan
Karthi Mahadevan

Posted on

AWS Lambda RIC - Runtime interface Client

Why did we choose lambda ric ?

  • Docker images can handle larger deployments (up to 10GB)
  • Perfect for bundling extensive resources like opa policies
  • More efficient than ZIP files for large codebases
  • Better layer management and caching

Standardization Benefits

  • Consistent environments across development and production
  • Same container runs locally and in Lambda
  • Simplified CI/CD pipelines
  • Uniform testing environment

More..

  • Custom runtime configurations
  • Specific system libraries
  • Large framework requirements

Local testing details are in https://github.com/aws/aws-lambda-python-runtime-interface-client?tab=readme-ov-file#local-testing

We heavily use chainguard images,so build Docker image

FROM cgr.dev/chainguard/python ARG LAMBDARIC_VERSION=3.0.0 RUN python -m pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host=files.pythonhosted.org --no-cache-dir awslambdaric=="${LAMBDARIC_VERSION}" COPY --chown=root:root --chmod=755 src/ ./src # your function handlers ENTRYPOINT [ "python", "-m", "awslambdaric" ] CMD [ "src/handler.receiver" ] 
Enter fullscreen mode Exit fullscreen mode
 docker build -t $docker_build_name -f your.Dockerfile . 
Enter fullscreen mode Exit fullscreen mode

Remember to push the image to ECR :) Or just test via

Run your Lambda image function using the docker run command.

docker run -d -v ~/.aws-lambda-rie:/aws-lambda -p 9000:8080 \ --entrypoint /aws-lambda/aws-lambda-rie \ myfunction:latest \ /usr/local/bin/python -m awslambdaric app.handler 
Enter fullscreen mode Exit fullscreen mode

This runs the image as a container and starts up an endpoint locally at http://localhost:9000/2015-03-31/functions/function/invocations.

Post an event to the following endpoint using a curl command:

curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}' 
Enter fullscreen mode Exit fullscreen mode

Remember to check the logs and clean later

 docker logs "$(docker ps -q)" echo" Stop and prune Docker containers" docker stop "$(docker ps -a -q)" docker system prune 
Enter fullscreen mode Exit fullscreen mode

Top comments (0)