aws sns发布压缩的有效负载

时间:2019-01-16 19:29:28

标签: compression amazon-sns

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

3 个答案:

答案 0 :(得分:1)

您已经看过这个了吗? https://docs.aws.amazon.com/sns/latest/dg/sns-large-payload-raw-message-delivery.html

如果您认为文件可以随着时间增加,我建议使用另一种方法。

将文件放在S3存储桶上,并将S3事件通知附加到SNSTopic,以便在准备好处理新文件时将通知所有使用者。 换句话说,SNS的消息将是文件的位置,而不是文件本身。 考虑一下。

答案 1 :(得分:1)

您可以gzip邮件正文-但是-SNS邮件正文仅支持UTF-8字符数据。压缩数据是二进制的,因此与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)一起使用。

答案 2 :(得分:0)