目前我们有一个aws lambda (基于java的运行时),它接受一个SNS作为输入,然后执行业务逻辑,并生成一个XML文件,将其存储到S3。
现在的实现是在.tmp位置创建XML,我们知道这是aws lambda (500mb)的空间限制。
我们有没有办法仍然使用lambda,但可以在不使用.tmp文件夹的情况下将XML文件流式传输到S3?
我做了研究,但仍然找不到解决方案。
谢谢。
发布于 2019-07-11 17:15:12
您可以直接将对象从内存加载到s3,而不必将其存储在本地。您可以使用put object接口来实现此目的。但是,请记住,使用lambda仍然有时间和总内存限制。如果你的对象太大,你可能也会用完。
发布于 2019-07-11 19:23:47
如果您可以将文件拆分成块,并且在处理文件末尾时不需要更新文件的开头,则可以使用multipart upload提供一个ready to go块,然后为下一个块释放内存。
否则,您仍然需要一个临时存储来形成XML的所有部分。您可以使用DynamoDB或Redis,当您收集XML的所有部分时,您可以开始逐个部分地上传,然后清理数据库(或设置TTL以自动清理)。
https://stackoverflow.com/questions/56985613
复制相似问题