Установка атрибутов сообщения SNS с помощью параметров запроса при вызове HTTP API - PullRequest
0 голосов
/ 17 июня 2020

Итак, я использую SNS HTTP API для публикации sh сообщения следующего формата:

POST https://sns.ap-south-1.amazonaws.com/
    ?Action=Publish
    &Message=%7B%22hello%22:%22World%22%7D
    &TopicArn=arn:aws:sns:ap-south-1:1234567890:sns-topic-name
    &Subject=some-subject

Причина, по которой я не могу использовать их стандартный API с телом запроса, - потому что интеграция API Gateway -> SNS, похоже, не поддерживает его или на самом деле потребует огромного количества переписывания запросов, что, я не уверен, возможно даже без добавления Lambda между ними. И я не могу вставить лямбду между ними, потому что для этого конкретного конвейера существуют строгие требования к службам только высокой доступности.

Интеграция, описанная выше, работает идеально, без проблем. Теперь проблема в том, что я тоже хочу отправлять атрибуты сообщения, но я почти не могу найти документации о том, как их кодировать в строках запроса при вызове конечной точки HTTP. Я пробовал следующее:

   &MessageAttribute.entry.1.Name=message-key
   &MessageAttribute.entry.1.Value=message-value
   &MessageAttribute.entry.1.Name=message-key
   &MessageAttribute.entry.1.DataType=String
   &MessageAttribute.entry.1.Value=message-value
   &MessageAttribute.entry.1.Name=message-key
   &MessageAttribute.entry.1.DataType=String
   &MessageAttribute.entry.1.StringValue=message-value

Когда я впервые попробовал это с помощью entry.0, я получил сообщение об ошибке «0 - недопустимый индекс» - поэтому я попробовал это с 1. Ошибка, которую я получаю сейчас, всегда "Неожиданный конец сложной структуры", которая даже после поиска никуда меня не привела.

Я пробовал использовать aws cli с --debug, и похоже, что они используют POST запрос с телом c, специфичным для SNS, что, как я упоминал выше, на самом деле не вариант. Любая помощь будет принята с благодарностью.

...