amazon-web-services - AWS SNS HTTP 订阅未调用端点
问题描述
我已经在我的开发机器中使用Localstack部署了 AWS SNS ,现在我正在尝试使用我从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
端点。应该调用它以确认订阅。但它从来没有被调用过。
我有一些线索。我已经使用 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 ERROR 405 对应于 Method Not Allowed 错误,因此它可能正在尝试调用容器端点而不是我的主机的端点。
我该如何解决这个问题?
解决方案
解决了。由于 Docker 网络,这是一个 IP 解决问题。
我创建了一个子网:
docker network create -d bridge --subnet 192.168.0.0/24 --gateway 192.168.0.1 mynet
并订阅 SNS192.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
完毕!
推荐阅读
- c++ - Qmake 错误:QT 中的未知模块:图表
- azure - 如何在 Azure 数据工厂中获取文件计数并基于它进行活动
- windows - Windows:如何获取当前发出声音的所有应用程序列表?
- c# - 从列表中过滤
列表的 - angular - NullInjectorError:Ionic 4 FirebaseX 中没有 FirebaseX 的提供程序
- javascript - 仅在 javascript 中使用 Regex 保留地址的结尾
- css - 用 css 平滑动画缩放对象
- vb.net - 如何在打印预览对话框中显示多个页面?
- python - 如何在 python 中的 csv 中导入 3D 表?
- java - 本地路径的 OSGi httpService.registerResources()