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