我必须做一些可怕的错误,但当我尝试使用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订阅SNS主题与Web控制台之间是否存在根本区别?
答案 0 :(得分:2)
您应该使用--notification-endpoint
而不是--endpoint-url
。 endpoint-url
参数用于告知AWSCLI将实际subscribe
请求发送到何处。这就是你所看到的。
aws sns subscribe --topic-arn <valid-arn> --protocol http --notification-endpoint <valid, accessible URL>