关于 localstack-extensions
面向 LocalStack 用户和扩展开发者的指南,介绍通过 legacy localstack CLI 管理扩展、配置扩展及开发自定义扩展。它特别说明 lstk 不支持扩展,安装扩展后须用 localstack 启动模拟器。
主要功能
- 01列出、安装和卸载扩展
- 02启用或禁用扩展
- 03通过环境变量配置扩展
- 04开发并本地安装自定义扩展
- 05说明 localstack 与 lstk 的限制
适用场景
- 01为 LocalStack 添加扩展功能
- 02安装指定版本或 Git 扩展
- 03在开发中测试自定义扩展
- 04排查扩展未加载或端口冲突
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ localstack/ skills --skill localstack-extensions安装后在 Claude Code 中输入/localstack-extensions确认已加载。
详细介绍
LocalStack 扩展
管理 LocalStack 扩展,以添加自定义功能、集成第三方工具并扩展 LocalStack 的能力。
lstk不支持扩展。 没有lstk extensions命令套件。扩展工作流必须使用旧版localstackCLI 来安装扩展和启动模拟器——lstk使用自己的卷目录(lstk volume path,例如~/Library/Caches/lstk/volume/localstack-aws),与扩展安装到的旧版卷目录分开,因此由lstk启动的模拟器不会加载这些扩展。对于其他所有操作——生命周期、IaC、快照、日志——请优先使用
lstk。请参阅localstack技能。
功能
- 安装和管理 LocalStack 扩展
- 发现可用扩展
- 配置扩展设置
- 开发自定义扩展
先决条件
旧版 CLI,以及以下示例中使用的 awslocal 包装器:
pip install localstack
pip install awscli-local # optional; or use: aws --endpoint-url=http://localhost:4566
请勿同时运行 lstk start 和 localstack start——它们各自管理自己的容器,会在端口 4566 上发生冲突。启动另一个之前,请先停止其中一个(lstk stop / localstack stop)。
扩展管理
列出已安装的扩展
localstack extensions list
安装扩展
# Install from PyPI
localstack extensions install localstack-extension-name
# Install specific version
localstack extensions install localstack-extension-name==1.0.0
# Install from Git repository
localstack extensions install "git+https://github.com/org/extension-repo.git"
卸载扩展
localstack extensions uninstall localstack-extension-name
启用/禁用扩展
# Extensions are enabled by default after installation
# Disable via environment variable
EXTENSION_NAME_ENABLED=0 localstack start -d
可用扩展
使用扩展
MailHog 扩展
# Install
localstack extensions install localstack-extension-mailhog
# Start LocalStack with the legacy CLI so the extension is loaded
localstack start -d
# Access MailHog UI
open http://localhost:8025
# SES emails will be captured by MailHog
awslocal ses send-email \
--from [email protected] \
--to [email protected] \
--subject "Test" \
--text "Hello"
开发自定义扩展
扩展结构
my-extension/
├── setup.py
├── my_extension/
│ ├── __init__.py
│ └── extension.py
基本扩展
# extension.py
from localstack.extensions.api import Extension, http
class MyExtension(Extension):
name = "my-extension"
def on_extension_load(self):
print("Extension loaded!")
def on_platform_start(self):
print("LocalStack is starting!")
@http.route("/my-endpoint")
def my_endpoint(self, request):
return {"message": "Hello from extension!"}
安装本地扩展
# Install in development mode
localstack extensions install -e ./my-extension
# Developer mode helpers
localstack extensions dev list
localstack extensions dev enable ./my-extension
配置
通过传递给 localstack start 的环境变量配置扩展:
# General pattern
EXTENSION_<NAME>_<SETTING>=value localstack start -d
# Example
EXTENSION_MAILHOG_PORT=8025 localstack start -d
请注意,旧版 CLI 接受这些变量时不带 lstk 所需的 LOCALSTACK_ 前缀。
故障排除
- 扩展未加载:确认你使用
localstack start而非lstk start启动了模拟器——lstk使用不同的卷目录,因此无法看到已安装的扩展 - 端口 4566 冲突:可能仍有由
lstk管理的容器在运行;请先运行lstk stop - 启动时出错:检查
localstack logs中的扩展堆栈跟踪 - 冲突:禁用冲突的扩展
- 版本问题:确保扩展与当前 LocalStack 版本兼容
- Docker Compose 用户:将
LOCALSTACK_VOLUME_DIR指向主机上的 LocalStack 卷(Linux 上为~/.cache/localstack,macOS 上为~/Library/Caches/localstack),以便 CLI 将扩展安装到正确的位置
评论
支持 Markdown