Skip to content

Concurrency, runtimes, and execution sandboxes

The fundamental difference is where and how execution environments run and how many invocations each environment can handle at once.

  • Lambda (default): single concurrency — at most one invocation per execution environment at a time.
  • LMI: multi-concurrent invocations — one environment can process multiple invocations simultaneously, improving utilisation of underlying EC2 — especially for IO-heavy apps (AWS calls out web services and batch-style work).

Multi-concurrency changes how you think about thread safety, global state, and context isolation (Concurrency model).

LMI does not support every default-Lambda runtime. The supported language floors and multi-concurrency behaviour are defined on the product pages; the table below matches the Supported languages list as of that document.

Language Minimum (per AWS) Example runtime values Multi-concurrency (per AWS)
Java Java 21 and later java21, … (newer managed identifiers as AWS adds them) One process, OS threads — handler must be thread-safe
Python Python 3.13 and later python3.14, python3.13, … One process per concurrent request — watch shared resources such as /tmp
Node.js Node.js 22 and later nodejs22.x, nodejs24.x, … Worker threads + async; safe shared state
.NET .NET 8 and later dotnet8, … Tasks / async; safe shared state
Rust OS-only provided.al2023 and later provided.al2023, … One process, Tokio tasks — handler Clone + Send

Exact runtime strings, region availability, and new language versions live in the language topics and API reference. Use the LMI runtimes hub (and Next steps there) before you pin a runtime value in config.