LocalStack Extensions
LocalStack Extensions (`localstack-ext`) is a Python library that enables developers to extend and customize LocalStack, a fully functional local cloud stack. Extensions run as Python applications within the LocalStack container, allowing for new service emulators, modifications to existing services, and custom functionality. The library is currently at version 2026.3.0 and follows a monthly calendar versioning cadence (YYYY.MM.patch).
Warnings
- breaking LocalStack (and its associated components like localstack-ext) adopted calendar versioning (YYYY.MM.patch) starting with the March 2026 release. This means version numbers like `2026.03.0` instead of traditional semantic versioning. Users should adjust their version pinning accordingly.
- breaking As of March 23, 2026, the `localstack/localstack:latest` Docker image and other LocalStack components now require authentication via a `LOCALSTACK_AUTH_TOKEN`. Running LocalStack (which hosts `localstack-ext` extensions) without this token will result in authentication errors.
- gotcha The LocalStack Extensions API is currently in a 'preview' stage and may be subject to future changes. This means that future updates to `localstack-ext` might introduce breaking changes to the extension development API.
- gotcha Installing `localstack-ext` (or the core `localstack` package that depends on it) into a global Python environment can lead to dependency conflicts (`subprocess-exited-with-error`).
- gotcha While extensions run in the same Python process as LocalStack and can technically import internal LocalStack modules, doing so is discouraged. These internal modules are not part of the public API and can change in patch versions, potentially breaking your extension.
- gotcha LocalStack extensions are installed into a dedicated virtual environment within the LocalStack volume (default `~/.cache/localstack`). If you customize the `LOCALSTACK_VOLUME_DIR` for your LocalStack instance, you must explicitly specify this path before installing extensions to ensure they are persisted and correctly loaded.
Install
-
pip install localstack-ext
Imports
- Extension
from localstack.extensions.api import Extension
Quickstart
import logging
from localstack.extensions.api import Extension
LOG = logging.getLogger(__name__)
class MyReadyAnnouncerExtension(Extension):
"""
A minimal LocalStack extension that logs a message when LocalStack is ready.
"""
name = "my-ready-announcer-extension"
def on_platform_ready(self):
"""
Called when LocalStack is fully ready and the Ready marker has been printed.
"""
# Replace 'YOUR_AUTH_TOKEN_HERE' with a real token or use os.environ.get('LOCALSTACK_AUTH_TOKEN', '')
# if this code were part of a larger application that manages LocalStack itself.
# For an extension, the token is typically set for the LocalStack runtime it operates within.
LOG.info(f"Extension '{self.name}' is loaded and LocalStack is ready to roll!")
# To use this extension:
# 1. Save it as a Python file (e.g., `my_extension.py`) within a Python package structure.
# 2. Define an entry point in your `pyproject.toml` or `setup.py` (e.g., under `[options.entry_points]`):
# `localstack.extensions = my_ready_announcer = my_extension_module:MyReadyAnnouncerExtension`
# 3. Install the extension into LocalStack using the CLI: `localstack extensions install .` (from the package root)
# 4. Start LocalStack. The log message will appear in LocalStack's logs when it's ready.