Packages
A dependency-free AWS Lambda custom runtime for Elixir, built on :inets/:httpc and the OTP-bundled JSON module, meant to run on a Lambda layer providing OTP.
Current section
Files
Jump to
Current section
Files
aws_lambda_runtime
CHANGELOG.md
CHANGELOG.md
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.2.0] - 2026-11-10
### Added
- `AWS.Lambda.Runtime.Release.lambda/1` — returns the whole release
configuration (`include_erts: false`, stripped beams, the `bootstrap`
entrypoint and the `vm.args`/`env.sh` templates). Any `mix release` option
overrides its defaults, and it accepts `:strip_iex`, `:before_steps` and
`:after_steps`. Declare it lazily:
`releases: [lambda: fn -> AWS.Lambda.Runtime.Release.lambda() end]`.
- `AWS.Lambda.Runtime.Release.strip_iex/1` — release step removing IEx from
the package.
- `bootstrap` exits with a clear error when `bin/lambda` is missing, i.e.
when the release isn't named `lambda`.
- The `lambda-layer-elixir` image ships `git`, `tar` and `zip`.
### Changed
- `mix aws_lambda.build` pulls the multi-arch
`lambda-layer-elixir:<elixir>-erlang-<erlang>` image and selects the
architecture with `--platform`, instead of always pulling the `-arm64` tag.
- `bootstrap` and the `vm.args`/`env.sh` templates are applied through
`rel_templates_path` and its `overlays` directory, instead of being copied by
custom steps.
### Removed
- `AWS.Lambda.Runtime.Release.copy_bootstrap/1` and
`AWS.Lambda.Runtime.Release.copy_release_files/1` — replace the release
configuration in `mix.exs` with `AWS.Lambda.Runtime.Release.lambda/1`.
[0.2.0]: https://github.com/GRoguelon/aws_lambda_runtime/releases/tag/v0.2.0
## [0.1.1] - 2026-08-20
### Added
- Docker build scripts (`docker/erlang`, `docker/elixir`) and READMEs for
building the `lambda-layer-erlang` and `lambda-layer-elixir` images that
`mix aws_lambda.build` pulls from.
- `mix aws_lambda.build` — `--dep`/`-d` flag to install extra `dnf` packages
(e.g. `git`) in the build container alongside `tar`.
### Changed
- `mix aws_lambda.build` — colorized, more consistent step output; internal
cleanup.
### Removed
- `AWS.Lambda.Runtime.MixRelease` (`priv/mix/release.exs`) — the release
steps it configured are documented directly in the README instead.
[0.1.1]: https://github.com/GRoguelon/aws_lambda_runtime/releases/tag/v0.1.1
## [0.1.0] - 2026-08-19
### Added
- `AWS.Lambda.Runtime` — the custom runtime loop: long-polls the Lambda
Runtime API, dispatches each invocation to your handler within a
supervised, deadline-bounded task, and reports the result or failure back
to Lambda without crashing the sandbox.
- `AWS.Lambda.Runtime.API` — a dependency-free `:inets`/`:httpc` client for
the Lambda Runtime API (`2018-06-01`).
- `AWS.Lambda.Runtime.Context` — per-invocation context assembled from the
`Lambda-Runtime-*` response headers and the function's environment.
- `AWS.Lambda.Runtime.Handler` — the behaviour your function implements, plus
resolution of the `_HANDLER` environment variable / compile-time config.
- `AWS.Lambda.Runtime.Application` — the OTP application supervising the
runtime loop, with a `config :aws_lambda_runtime, start_runtime: false`
escape hatch for environments (like this library's own test suite) that
shouldn't start it.
- `AWS.Lambda.Runtime.MixRelease` and `AWS.Lambda.Runtime.Release` — `mix
release` configuration and steps that package a function for Lambda's
`provided.al2023` runtime, including the `bootstrap` entrypoint and
Lambda-tuned `vm.args`/`env.sh`.
- `mix aws_lambda.build` — packages a function's Lambda release inside the
Elixir builder Docker image and downloads the resulting deployment zip.
[0.1.0]: https://github.com/GRoguelon/aws_lambda_runtime/releases/tag/v0.1.0