aws sns 发布压缩负载

Ami*_*mar 1 compression amazon-sns

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

Mic*_*bot 8

您可以 gzip 消息正文——但是——SNS 消息正文仅支持 UTF-8 字符数据。Gzip 压缩的数据是二进制的,因此不能直接与 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)。