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.

LanguageMinimum (per AWS)Example runtime valuesMulti-concurrency (per AWS)
JavaJava 21 and laterjava21, … (newer managed identifiers as AWS adds them)One process, OS threads — handler must be thread-safe
PythonPython 3.13 and laterpython3.14, python3.13, …One process per concurrent request — watch shared resources such as /tmp
Node.jsNode.js 22 and laternodejs22.x, nodejs24.x, …Worker threads + async; safe shared state
.NET.NET 8 and laterdotnet8, …Tasks / async; safe shared state
RustOS-only provided.al2023 and laterprovided.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.