localstack / localstack/localstack-mcp-server
Deployer health check blocks deploys to remote/ephemeral instances (requires a local gateway)
还没有人认领这个 Issue。
- 主要语言
- TypeScript
- 星标
- 27
- 派生
- 13
- PR 合并指标
- 30 天内没有已合并 PR
描述
Summary
The localstack-deployer tool runs a pre-deploy reachability check against a local gateway (http://${LOCALSTACK_HOSTNAME:-localhost}:${LOCALSTACK_PORT:-4566}/_localstack/health). When you want the deploy to target a remote Ephemeral Instance (which is HTTPS-only, e.g. https://ls-<id>.sandbox.localstack.cloud), that check can never pass on its own, so the deploy is blocked with:
LocalStack Not Running — LocalStack is not reachable at http://localhost:4566 ...
even though the actual deploy would succeed against the ephemeral instance. The result is that you must keep a throwaway local LocalStack running purely to satisfy the health gate, while the real deploy is redirected elsewhere.
Why this matters
A natural workflow is to give each agent (or each CI job / worktree) its own Ephemeral Instance in the cloud and deploy straight to it via the MCP server. The deployer can already do this: tflocal/cdklocal pick up the endpoint from the environment, and setting per-service {SERVICE}_ENDPOINT=https://ls-<id>.sandbox.localstack.cloud in the MCP server's env makes terraform apply land resources on the ephemeral instance correctly. The only thing standing in the way is the pre-deploy health probe.
Details
- The env builder forwards the process env to
tflocal, so per-service*_ENDPOINThttps values reach the provider and resources deploy to the ephemeral instance as expected. - The health gate, however, is hardcoded to an
http://host:portprobe. Ephemeral instances only answer onhttps://<host>(443);http://<host>:443andhttp://<host>:80do not respond, so the gate fails. - Confirmed: with a local LocalStack running (gate satisfied) + per-service
*_ENDPOINT=https://ls-<id>...set, a Terraform deploy vialocalstack-deployerlands entirely on the ephemeral instance. With the local instance stopped, the same deploy is refused by the gate beforetflocalever runs.
Steps to reproduce
- Create an ephemeral instance:
localstack ephemeral create --name demo-> note thehttps://ls-<id>.sandbox.localstack.cloudendpoint. - Configure the MCP server
envwithAWS_ENDPOINT_URLand per-service{SERVICE}_ENDPOINTall set to that https endpoint (and the auth token). - Stop any local LocalStack.
- Call
localstack-deployer(deploy, terraform) on a small project. - It fails with "LocalStack is not reachable at http://localhost:4566" instead of deploying to the ephemeral instance.
Suggested fix
When a remote endpoint is configured (e.g. AWS_ENDPOINT_URL / *_ENDPOINT points at a non-local host, or an explicit ephemeral endpoint is provided), the pre-deploy reachability check should probe that endpoint (honouring https), or be skipped, rather than always probing http://localhost:4566. Ideally the tool would accept an explicit target/endpoint so a deploy can be aimed at an ephemeral instance without needing a local gateway at all.
Environment
@localstack/localstack-mcp-server(latest vianpx)terraform-local(tflocal) 0.26.0, Terraform 1.14.9- Ephemeral Instances (public preview), image
localstack/localstack-pro:latest
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
首先定位 issue 中描述的 localstack-deployer 的 pre-deploy health check 和 env builder。使用远程 HTTPS ephemeral endpoint 且不提供本地 gateway 来复现故障,然后验证已配置的远程 endpoint 会被探测,或者该 check 会被跳过,并验证 deploy 会通过 tflocal 继续执行。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- terraform, typescript
- 领域
- cloud, devops, infrastructure
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 活跃
- 描述清晰度
- 基本清楚
- 新手友好度
- 55/100