当我们明确将 url 设置为 4576 时,localstack 尝试连接到 localhost:4566

cWe*_*ing 6 amazon-web-services docker localstack

我的团队正在尝试为我们的项目进行本地设置。我们正在使用 image 运行相同的 docker-compose 文件localstack/localstack:0.8.10。我们正在运行相同的 shell 脚本。我们的脚本看起来像这样......

awslocal sns subscribe \
    --topic-arn arn:aws:sns:us-east-1:123456789012:cx-clientcomm-traffic-controller-sent \
    --protocol sqs \
    --notification-endpoint http://localhost:4576/queue/cx-clientcomm-request-processor-queue
Run Code Online (Sandbox Code Playgroud)

无论出于何种原因,两名开发人员都会收到此错误。Could not connect to the endpoint URL: http://localhost:4566对于 SQS。

我知道这个端口用于最新版本的 localstack,但他们运行与我们相同的映像。

有任何想法吗??

小智 12

这是已知问题。您需要在 docker-compose lockalstack 图像中添加下一个属性

HOSTNAME_EXTERNAL

主机名:本地堆栈

所以原来的 docker-compose 看起来像:

localstack:
container_name: "${LOCALSTACK_DOCKER_NAME-localstack}"
image: localstack/localstack
hostname: localstack
networks:
  - anynet
ports:
  - "4566:4566"
environment:
  - SERVICES=sqs,sns
  - DEBUG=1
  - DOCKER_HOST=unix:///var/run/docker.sock
  - HOST_TMP_FOLDER=${TMPDIR}
  - HOSTNAME_EXTERNAL=localstack
volumes:
  - ./data:/tmp/localstack
  - "/var/run/docker.sock:/var/run/docker.sock"
Run Code Online (Sandbox Code Playgroud)

如果你将 localhost 添加到这两个属性中,它将不起作用!您需要选择另一个名称。我将 localstack 作为主机名和 HOSTNAME_EXTERNAL,它对我有用