【问题标题】:Why does subscribing from AWS CLI to a SNS topic generate an unexpected payload?为什么从 AWS CLI 订阅 SNS 主题会生成意外有效负载?
【发布时间】:2017-01-20 22:35:38
【问题描述】:

我一定是做错了什么,但是当我尝试使用 AWS CLI 订阅 SNS 主题时,如下所示:

aws sns subscribe --topic-arn <valid-arn> --protocol http --endpoint-url <valid, accessible URL>

我收到了一个完全出乎意料的 POST 负载:

POST /api/aws/sns HTTP/1.1
Host: <censored>
Accept-Encoding: identity
User-Agent: aws-cli/1.11.38 Python/3.6.0 Linux/4.8.13-1-ARCH botocore/1.5.1
X-Amz-Date: 20170120T140758Z
Authorization: <censored>
Content-Length: 127
Content-Type: application/x-www-form-urlencoded

Action=Subscribe&Version=2010-03-31&TopicArn=censored&Protocol=http[!http]

当根据the documentation:

您的代码应该读取 HTTP POST 请求的 HTTP 标头 Amazon SNS 发送到您的终端节点。您的代码应该寻找 标头字段 x-amz-sns-message-type,它告诉您的类型 Amazon SNS 发送给您的消息。

所以它应该是一个至少包含x-amz-sns-message-type 标头的 JSON 文档。

此外,验证 POST 请求是从我的主机向 URL 端点发出的,这看起来很奇怪。

从 AWS CLI 与 Web 控制台订阅 SNS 主题有根本区别吗?

【问题讨论】:

    标签: amazon-web-services amazon-sns aws-cli


    【解决方案1】:

    您应该使用--notification-endpoint 而不是--endpoint-urlendpoint-url 参数用于告诉 AWSCLI 将实际的 subscribe 请求发送到哪里。这就是你所看到的。

    aws sns subscribe --topic-arn <valid-arn> --protocol http --notification-endpoint <valid, accessible URL>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-26
      • 2015-05-29
      • 2021-11-25
      • 2016-06-27
      • 1970-01-01
      • 2015-01-14
      • 1970-01-01
      相关资源
      最近更新 更多