Localstack从v2升级到v3后SQS服务无法通过localhost直接访问
Localstack 3.0.1升级后SQS直接HTTP访问失效的解决办法
Localstack 3.x版本对服务的HTTP请求路由规则做了调整,默认不再支持2.x版本中/<account-id>?Action=...这种直接路径访问的方式,这就是升级后无法通过原URL访问SQS的原因。下面提供两种解决方式:
方式一:使用标准AWS SQS API路径格式
直接访问时改用符合AWS官方规范的路径,示例如下:
- 简化版(依赖默认区域和账号ID):
http://localhost:4566/aws/sqs?Action=ListQueues
- 指定区域和账号ID的完整格式:
http://localhost:4566/eu-west-1/000000000000/sqs?Action=ListQueues
方式二:启用Legacy模式恢复旧路径行为
如果需要完全兼容之前的访问方式,只需在Docker Compose的环境变量中添加LEGACY_SERVICE_PATHS=1,修改后的配置如下:
version: '3.4' services: localstack: image: localstack/localstack:3.0.1 environment: - SERVICES=dynamodb,kinesis,s3,sns,sqs - DEFAULT_REGION=eu-west-1 - HOSTNAME_EXTERNAL=${DEV_HOST:-host.docker.internal} - LOCALSTACK_SSL=0 - REQUESTS_CA_BUNDLE= - CURL_CA_BUNDLE= - LEGACY_SERVICE_PATHS=1 ports: - 4566:4566 healthcheck: test: [ "CMD", "curl", "-f", "http://localhost:4566/health" ] interval: 30s timeout: 10s retries: 5
添加该配置后,3.0.1版本会恢复2.x的路径路由逻辑,你原来的http://localhost:4566/000000000000?Action=ListQueues就能正常访问了。
Localstack 3.x默认调整路由规则是为了更贴近AWS生产环境的API规范,你可以根据自身需求选择适配新路径或启用兼容模式。
内容的提问来源于stack exchange,提问作者Martin Bamford
相关产品推荐
相关产品推荐

