首页 > 解决方案 > aws sns 发布压缩有效负载

问题描述

可以发布到 AWS-SNS 的消息的最大大小限制为 256KB。我们可以使用 GZIP 压缩消息并发送发布压缩消息以克服大小限制吗?

标签: compressionamazon-sns

解决方案


您可以 gzip 邮件正文 -但是- SNS 邮件正文仅支持 UTF-8 字符数据。Gzipped 数据是二进制的,因此与 SNS 不直接兼容,因为并非每个可能的字节序列也是有效的 UTF-8 字符序列。

因此,在对有效负载进行 gzip 压缩后,您需要使用 base-64 等方案对二进制数据进行编码。Base-64 仅使用 64(即 2^6,每字节 6 位)符号对任意二进制数据(每字节 8 位)进行编码,因此字节数增加了 8/6(133%)编码。这意味着 192KB 的二进制数据编码为 256KB 的 base-64 编码数据,因此gzip 后允许的最大消息大小变为 192K(因为 SNS 限制为 256KB)。但是所有 base-64 符号都是有效的单字节 UTF-8 字符,这是这种编码如此普遍使用的一个重要原因,尽管它的大小有所增加。那,以及 gzip 通常具有远优于 1.33:1 的压缩比(这是 gzip + base-64 的收支平衡点)这一事实。

但是,如果您的消息将 gzip 压缩到 192K 或更低,这肯定适用于 SNS(以及具有相同字符集和大小限制的 SQS)。


推荐阅读