localstack пытается подключиться к localhost: 4566, когда у нас явно задан URL-адрес 4576

#amazon-web-services #docker #localstack

#amazon-веб-сервисы #docker #localstack

Вопрос:

Моя команда пытается получить локальную настройку для нашего проекта. Мы запускаем тот же самый файл docker-compose с изображением localstack/localstack:0.8.10 . Мы запускаем один и тот же сценарий оболочки. Наш сценарий выглядит примерно так…

 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
 

По какой-то причине два разработчика получают эту ошибку. Could not connect to the endpoint URL: http://localhost:4566 для SQS.

Я знаю, что этот порт используется для последних версий localstack, но они используют тот же образ, что и мы.

Есть какие-нибудь идеи??

Ответ №1:

Это известная проблема. Вам нужно добавить в docker-compose изображение lockalstack следующие свойства

HOSTNAME_EXTERNAL

имя хоста: localstack

таким образом, исходная настройка 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"
 

И это не сработает, если вы добавите localhost к обоим свойствам!!! Вам нужно выбрать другое имя. Я ввел localstack для hostname и HOSTNAME_EXTERNAL, и это работает для меня