【发布时间】: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]
您的代码应该读取 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