  AWS Lambda is a serverless event-driven compute service, part of a category
of cloud compute offerings sometimes called Function-as-a-service (FaaS). When
we first released AWS Lambda, functions were limited to 250MB of code and
dependencies, packaged as a simple compressed archive. In 2020, we released
support for deploying container images as large as 10GiB as Lambda functions,
allowing customers to bring much larger code bases and sets of dependencies to
Lambda. Supporting larger packages, while still meeting Lambda's goals of rapid
scale (adding up to 15,000 new containers per second for a single customer, and
much more in aggregate), high request rate (millions of requests per second),
high scale (millions of unique workloads), and low start-up times (as low as
50ms) presented a significant challenge.
  We describe the storage and caching system we built, optimized for delivering
container images on-demand, and our experiences designing, building, and
operating it at scale. We focus on challenges around security, efficiency,
latency, and cost, and how we addressed these challenges in a system that
combines caching, deduplication, convergent encryption, erasure coding, and
block-level demand loading.
  Since building this system, it has reliably processed hundreds of trillions
of Lambda invocations for over a million AWS customers, and has shown excellent
resilience to load and infrastructure failures.
