Я, должно быть, делаю что-то ужасно не так, но когда я пытаюсь подписаться на тему SNS с помощью AWS CLI, вот так:
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-заголовки HTTP-запросов POST, которые Amazon SNS отправляет на вашу конечную точку. Ваш код должен искать поле заголовка x-amz-sns-message-type, в котором указывается тип сообщения, отправленного вам Amazon SNS.
Так что это должен быть документ JSON с заголовком хотя бы x-amz-sns-message-type
.
Кроме того, запрос POST проверки отправляется с моего хоста на конечную точку URL, что кажется странным.
Есть ли принципиальная разница между подпиской на тему SNS из интерфейса командной строки AWS и через веб-консоль?