aws sns публикует сжатые данные - PullRequest
0 голосов
/ 16 января 2019

Максимальный размер сообщения, которое может быть опубликовано в AWS-SNS, составляет 256 КБ. Можем ли мы сжать сообщение с помощью GZIP и отправить опубликовать сжатое сообщение, чтобы преодолеть ограничение размера?

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Вы можете сжать тело сообщения - , однако - Тела сообщения SNS поддерживают только символьные данные UTF-8. Сжатые данные являются двоичными, поэтому они не совместимы напрямую с SNS, поскольку не каждая возможная последовательность байтов также является допустимой последовательностью символов UTF-8.

Итак, после распаковки полезной нагрузки вам необходимо кодировать эти двоичные данные, используя схему, такую ​​как base-64. Base-64 кодирует произвольные двоичные данные (8 бит на байт), используя только 64 (что составляет 2 ^ 6, что фактически дает 6 бит на байт) символы, и поэтому количество байтов увеличивается на 8/6 (133%) в результате этого кодирование. Это означает, что 192 КБ двоичных данных кодируется в 256 КБ данных в кодировке base-64, поэтому максимально допустимый размер вашего сообщения после gzip становится 192 КБ (поскольку ограничение SNS составляет 256 КБ). Но все символы base-64 являются действительными однобайтовыми символами UTF-8, что является существенной причиной, почему это кодирование используется так часто, несмотря на увеличение его размера. Это и тот факт, что gzip обычно имеет степень сжатия, намного превосходящую 1,33: 1 (что является точкой безубыточности для gzip + base-64).

Но если ваши сообщения будут gzip до 192K или ниже, это определенно работает с SNS (а также с SQS, который имеет тот же набор символов и ограничения размера).

0 голосов
/ 16 января 2019

Вы уже взглянули на это? https://docs.aws.amazon.com/sns/latest/dg/sns-large-payload-raw-message-delivery.html

Если вы считаете, что файл может увеличиться со временем, я предлагаю другой подход.

Поместите файл в корзину S3 и прикрепите уведомление о событии S3 к SNSTopic, чтобы все потребители были уведомлены о готовности нового файла к обработке. Другими словами, сообщением SNS будет местоположение файла, а не сам файл. Подумай об этом.

...