Подписка AWS SNS HTTP не вызывает конечную точку - PullRequest
0 голосов
/ 02 июля 2018

Я развернул AWS SNS, используя Localstack на своем компьютере разработчика, и теперь я пытаюсь использовать сообщения, которые я посылаю из awslocal CLI (в основном это aws против моей локальной инфраструктуры Localstack). )

Сначала я создал тему:

$ awslocal sns create-topic --name my-topic

Затем я создал HTTP-подписку на http://localhost:8080/sns/publish:

$ awslocal sns subscribe --topic-arn "arn:aws:sns:us-east-1:123456789012:my-topic" --protocol http --notification-endpoint http://localhost:8080/sns/publish

У меня есть сервер, работающий на localhost в порту 8080 с конечной точкой POST /sns/publish. Он должен быть вызван для подтверждения подписки. Но это никогда не называется.

У меня есть некоторые подсказки. Я развернул Localstack с помощью Docker. После проверки журналов контейнера я увидел эту ошибку:

2018-07-02T10:20:03:INFO:werkzeug: 127.0.0.1 - - [02/Jul/2018 10:20:03] "POST /sns/publish HTTP/1.1" 405 -

HTTP ERROR 405 соответствует ошибке Method Not Allowed, поэтому, возможно, он пытается вызвать конечную точку контейнера вместо конечной точки моего хост-компьютера.

Как мне это решить?

1 Ответ

0 голосов
/ 02 июля 2018

решаемая. Это была проблема разрешения IP-адресов, связанная с сетью Docker.

Я создал подсеть:

docker network create -d bridge --subnet 192.168.0.0/24 --gateway 192.168.0.1 mynet

И подписаться на SNS против 192.168.9.1 вместо localhost:

$ awslocal sns subscribe --topic-arn "arn:aws:sns:us-east-1:123456789012:my-topic" --protocol http --notification-endpoint http://192.168.0.1:8080/sns/publish

Готово!

...