Почему подписка из интерфейса командной строки AWS на тему SNS создает неожиданную полезную нагрузку?

Я, должно быть, делаю что-то ужасно не так, но когда я пытаюсь подписаться на тему 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 и через веб-консоль?


person Emil Burzo    schedule 20.01.2017    source источник


Ответы (1)


Вы должны использовать --notification-endpoint, а не --endpoint-url. Параметр endpoint-url используется, чтобы сообщить AWSCLI, куда отправить фактический subscribe запрос. Вот что вы видите.

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