代码之家  ›  专栏  ›  技术社区  ›  Héctor

AWS SNS HTTP订阅未调用终结点

  •  0
  • Héctor  · 技术社区  · 7 年前

    我已经使用 Localstack 在我的dev机器中,现在我正在尝试使用从中发出的消息 awslocal cli(基本上是 aws 针对我的本地堆栈infra)

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

    $ 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 用一根柱子 /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 回复  |  直到 7 年前
        1
  •  0
  •   Héctor    7 年前

    解决了的。这是一个IP解决问题,因为使用了Docker网络。

    我创建了一个子网:

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

    并针对 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
    

    完成!

    推荐文章