You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LocalStack签名URL端点问题:LOCALSTACK_HOST环境变量未按预期生效

问题描述

我们正尝试配置LocalStack,让它返回的签名URL使用预设的localhost:4566,而非Docker Compose网络内的localstack:4566。因为本地React测试客户端无法解析localstack:4566这个网络主机名。

原本以为设置LOCALSTACK_HOST环境变量就能解决——该变量默认值是localhost.localstack.cloud:4566,按文档说明会被插入到LocalStack返回的URL和地址中,但实际配置后并没有生效。

当前Docker Compose配置

version: "3.5"

services:
  localstack:    
    image: localstack/localstack:2.1.0
    ports:
      - 4566:4566            # LocalStack Gateway
      - 4510-4559:4510-4559  # external services port range
    environment:
      - SERVICES=s3
      - DEBUG=1
      - LOCALSTACK_HOST=localhost:4566
    networks:
      - devnet
    volumes:
      - localstack:/var/lib/localstack
      - ./scripts/localstack/ready.d:/etc/localstack/init/ready.d

当前返回的URL示例

通过devnet网络访问LocalStack时,得到的签名URL如下:

http://localstack:4566/dev-upload-bucket/uploads/e9530040-5bac-48b4-8768-2aff1919e483/hello?partNumber=1&uploadId=eDOCkjtyyQw4dCH8GhgG0wSlVA12ZOAwXxXE4Iqn75WGl844NJgJZNg&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAYA3ELKN4FI62BMFI%2F20230725%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20230725T211351Z&X-Amz-Expires=3600&X-Amz-Security-Token=FwoGZXIvYXdzENn%2F%2F%2F%2F%2F%2F%2F%2F...
解决方案

针对LocalStack 2.x版本,LOCALSTACK_HOST变量已不再控制返回URL中的主机名,需改用以下两个环境变量组合配置:

  • LOCALSTACK_HOSTNAME: 设置LocalStack在Docker网络内部使用的主机名(保持为localstack即可,确保网络内服务能正常访问)
  • HOSTNAME_EXTERNAL: 指定LocalStack对外暴露的地址,也就是生成签名URL时返回给客户端的主机名和端口

修改后的Docker Compose环境变量部分如下:

environment:
  - SERVICES=s3
  - DEBUG=1
  - LOCALSTACK_HOSTNAME=localstack
  - HOSTNAME_EXTERNAL=localhost:4566

配置后,LocalStack生成的签名URL会自动替换为localhost:4566,本地React客户端就能正常解析并访问了。

内容的提问来源于stack exchange,提问作者user2403018

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 09:27:42