Будет ли пересылка событий AWS S3 на SQS в конечном итоге отличаться от сообщения S3 на SNS на SQS? - PullRequest
0 голосов
/ 13 февраля 2019

Я использую Splunk Technical Add-on, который будет извлекать сообщения из очереди SQS.Хотя TA предлагает использовать переадресацию S3 на SNS, и он подписан на SQS, существует также возможность пересылки S3 непосредственно на SQS.

Будет ли SNS вносить какие-либо изменения в то, что S3 отправляет на него?Или это будет полностью прозрачный способ передачи в SQS?

1 Ответ

0 голосов
/ 13 февраля 2019

Да, по умолчанию S3 → SQS и S3 → SNS → SQS приведут к двум различным структурам / форматам данных внутри тела сообщения SQS.

Это связано с тем, что подписка SNS предоставляет метаданные с каждым доставленным сообщением - SNS MessageId, Signature для проверки подлинности, Timestamp, когда SNS первоначально принялсообщение и другие атрибуты.Исходное сообщение кодируется в виде строки JSON внутри атрибута Message этой внешней структуры JSON.

Таким образом, с помощью SQS direct вы извлекаете событие S3 с помощью (псевдокода) ...

s3event = JSON.parse(sqsbody)

... но с SNS до SQS ...

s3event = JSON.parse(JSON.parse(sqsbody).Message)

Вы можете отключить дополнительные структуры и заставить SNS отправлять только исходную полезную нагрузку, включив необработанную доставку сообщений вподписка SQS на тему SNS.

https://docs.aws.amazon.com/sns/latest/dg/sns-large-payload-raw-message-delivery.html

При включенной доставке необработанных сообщений содержимое становится одинаковым как для S3 → SQS, так и для S3 → SNS → SQS.

Недостатком необработанной доставки сообщений является то, что вы теряете потенциально полезную информацию для устранения неполадок с доставкой необработанных сообщений, например идентификатор сообщения SNS и выданную SNS временную метку.

С другой стороны, если получатель получаетслужба (потребитель SQS) предполагает, что сообщения всегда поступают через SNS, и ожидает найти структуру данных SNS в теле сообщения SQS, тогда отправка прямой S3 → SQS приведет к тому, что потребитель обнаружит, что тело сообщения из SQS не соответствует егоожидания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...