Rust for AWS Lambda, the Docker Way

(beeb.li)

24 points | by beeb 4 days ago

6 comments

  • newfocogi 3 hours ago

    One of the massive benefits for Rust on Lambda is (as the author mentions) "extremely low start-up time, CPU usage and memory footprint". It's not clear to me if deploying Rust to Lambda via a docker image actually negates some of those benefits.

    • foo4u 2 hours ago

      Using Lambda functions stored in ECR has no impact on performance from my experience. AWS Lambda uses Firecracker under the hood, which builds a VM from a container image. It's likely that non-ECR image based Lambdas are actually packaged as a container image before being launched into a Firecracker VM.

      https://aws.amazon.com/blogs/aws/firecracker-lightweight-vir...

      • beeb 28 minutes ago

        This has been my experience as well, there was little to no impact on execution time at least.

    • beeb 31 minutes ago

      Good question! I ran some benchmarks before because I was also curious and besides some slightly larger standard deviation for cold starts execution time, there was so significant difference in performance when using docker.

  • tiew9Vii an hour ago

    An alternative to this is to statically compile and use scratch docker image.

    Another tip is if writing a http app etc Axum/Actix have Lambda shims.

    I add a cli flag “—lambda” which enables the shim. That means I can run the app locally, in Kubernetes, ECS, Lambda with minimum effort. It also makes dev easier pretending lambda doesn’t exist.

    • beeb 29 minutes ago

      Those are great tips! I'll have a look at the axum shim, which certainly would help if using axum in the first place. Minimal functions like we have at my work rarely need a fully featured framework however.