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
Raw

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