将大字符串压缩为 json 可序列化对象以供 AWS lambda 函数输出

Compress large string into json serializable object for AWS lambda function output

我想发送一个大字符串作为对 AWS 上 python lambda 函数的响应。文档指出响应必须 json 可序列化(必须 运行 到 json.dumps)。我的字符串大约为 12MB,大于 AWS 上允许的最大负载。如果我 gzip 字符串,它被压缩到大约 2MB,但是对象不再 json 可序列化。

这是一个最小的例子:

import gzip
import json
largeString=b"sdlfkjs dlfkjs dflkj "
compressed=gzip.compress(largeString)
out={}
out['data']=compressed
json.dumps(out)

其中 returns 预期错误:

TypeError: Object of type bytes is not JSON serializable

使用base64.b85encode()。这会将压缩数据扩展 25%,因此希望 2.5MB 仍然适合。

请注意,压缩可能不是解决您问题的有效方法。如果您的数据变得更大或更难压缩,您仍然可能会突破有效负载限制。