当前,我们有一个aws lambda(基于Java的运行时),它以SNS作为输入,然后执行业务逻辑并生成1个XML文件,并将其存储到S3。
现在的实现是在.tmp位置创建XML,我们知道aws lambda(500mb)存在空间限制。
我们还有什么办法可以使用lambda,但是可以在不使用.tmp文件夹的情况下将XML文件流式传输到S3吗?
我正在研究,但仍然没有找到解决方案。
谢谢。
答案 0 :(得分:0)
您可以将对象直接从内存加载到s3,而不必将其存储在本地。您可以为此使用put object API。但是,请记住,lambda仍然有时间和总内存限制。如果您的对象太大,您可能也用光了。
答案 1 :(得分:0)
如果您可以将文件拆分为多个块,并且在处理文件末尾时不需要更新文件的开头,则可以使用multipart upload提供随时可用的块,然后为下一个释放内存块。
否则,您仍然需要一个临时存储空间来构成XML的所有部分。您可以使用DynamoDB或Redis,并在其中收集XML的所有部分时,可以开始逐部分上载它,然后清理数据库(或将TTL设置为自动进行清理)。