Итак, я использую restifyJS для получения уведомлений SNS, и я создал для него тему и подписался на нее, используя соответствующий ARN. Я использовал конечную точку https, в которой, когда я запрашиваю подтверждение, я получаю следующие заголовки, когда я запрашиваю подтверждение.
{
connection: 'upgrade',
'x-real-ip': '*****************My IP address *****************',
'x-forwarded-for': '*************My IP address ************',
host: 'localhost:3000',
'content-length': '1530',
'x-amz-sns-message-type': 'SubscriptionConfirmation',
'x-amz-sns-message-id': '*************************************',
'x-amz-sns-topic-arn': 'arn:aws:sns:ap-south - ************',
'content-type': 'text/plain; charset=UTF-8',
'user-agent': 'Amazon Simple Notification Service Agent',
'accept-encoding': 'gzip,deflate'
}
Но я не получаю URL подписки.
Его нет в заголовках ... он находится в теле запроса («документ JSON»).
Based on the type specified by the header field
x-amz-sns-message-type
, your code should read the JSON document contained in the body of the HTTP request and process the message.https://docs.aws.amazon.com/sns/latest/dg/SendMessageToHttp.html
Как уже упоминалось, URL-адрес находится в теле запроса. Также обратите внимание, что тело - это JSON, но для типа содержимого установлено значение text / plain, что может привести к тому, что некоторые парсеры предоставят пустое тело запроса. Вы можете предоставить restify с помощью текстового / простого средства форматирования, которое анализирует содержимое json для сообщений SNS в соответствии с существованием заголовка x-amz-sns-message-type.