Вы можете сжать тело сообщения - , однако - Тела сообщения 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, который имеет тот же набор символов и ограничения размера).