AWS SNS HTTP订阅未调用终端节点

时间:2018-07-02 10:05:10

标签: amazon-web-services amazon-sns atlassian-localstack

我已经在开发机器中使用Localstack部署了AWS SNS,现在我正尝试使用从awslocal CLI发出的消息(基本上是对我本地计算机的aws下文中的Localstack)

首先,我创建了一个主题:

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

然后,我针对http://localhost:8080/sns/publish创建了HTTP订阅:

$ 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端点。应该调用它以确认订阅。但这从来没有。

我有一些线索。我已经使用Docker部署了Localstack。检查容器日志后,我看到了此错误:

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错误405对应于“方法不允许错误”,因此它可能正在尝试调用容器终结点而不是主机的终结点。

我该如何解决?

1 个答案:

答案 0 :(得分:0)

已解决。由于Docker网络,这是一个IP解决问题。

我已经创建了一个子网:

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

然后针对192.168.9.1而不是localhost订阅SNS:

$ 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

完成!