Amazon web services AWS Lambda会将大文件生成到S3

Amazon web services AWS Lambda会将大文件生成到S3,amazon-web-services,amazon-s3,aws-lambda,Amazon Web Services,Amazon S3,Aws Lambda,目前我们有一个aws lambda(基于java的运行时),它将SNS作为输入,然后执行业务逻辑并生成一个XML文件,将其存储到S3 现在的实现是在.tmp位置创建XML,我们知道aws lambda(500mb)存在空间限制 我们是否仍然可以使用lambda,但可以将XML文件流式传输到S3而不使用.tmp文件夹 我做研究,但仍然没有找到解决办法 谢谢。您可以直接从内存将对象加载到s3,而无需将其存储在本地。您可以为此使用API。但是,请记住,lambda仍然有时间和总内存限制。如果对象大小太

目前我们有一个aws lambda(基于java的运行时),它将SNS作为输入,然后执行业务逻辑并生成一个XML文件,将其存储到S3

现在的实现是在.tmp位置创建XML,我们知道aws lambda(500mb)存在空间限制

我们是否仍然可以使用lambda,但可以将XML文件流式传输到S3而不使用.tmp文件夹

我做研究,但仍然没有找到解决办法


谢谢。

您可以直接从内存将对象加载到s3,而无需将其存储在本地。您可以为此使用API。但是,请记住,lambda仍然有时间和总内存限制。如果对象大小太大,也可能会用完

您可以直接将对象从内存加载到s3,而无需将其存储在本地。您可以为此使用API。但是,请记住,lambda仍然有时间和总内存限制。如果对象大小太大,也可能会用完

如果您可以将文件分割成块,并且在处理文件的结尾时不需要更新文件的开头,那么您可以使用提供一个准备就绪的块,然后为下一个块释放内存


否则,您仍然需要一个临时存储来存储XML的所有部分。您可以使用DynamoDB或Redis,当您在那里收集XML的所有部分时,您可以开始一部分一部分地上传它,然后清理数据库(或设置TTL以自动清理).

如果您可以将文件分割成块,并且在处理文件的结尾时不需要更新文件的开头,那么您可以使用提供一个准备就绪的块,然后为下一个块释放内存


否则,您仍然需要一个临时存储来存储XML的所有部分。您可以使用DynamoDB或Redis,当您在那里收集XML的所有部分时,您可以开始一部分一部分地上传它,然后清理数据库(或设置TTL以自动清理)。

您的意思是,就像我将整个XML内容作为字符串(在Java中),然后将该对象作为字节字符串直接放到S3?是的。谢谢。所以我们仍然有3000mb的最大内存。对于这个用例,我们是否有更好的解决方案,这样我们就不会限制XML输出文件的大小了?是的。如果您需要更多,您应该研究ec2部署。您的意思是我将整个XML内容作为字符串(在Java中),然后将该对象作为字节字符串直接放入S3?是的。谢谢。所以我们仍然有3000mb的最大内存。对于这个用例,我们是否有更好的解决方案,这样我们就不会限制XML输出文件的大小了?是的。如果您需要更多,您应该研究ec2部署。