【问题标题】:AWS Lambda generates large size files to S3AWS Lambda 生成大型文件到 S3
【发布时间】:2019-11-20 23:03:54
【问题描述】:

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

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

我们有什么方法可以继续使用 lambda,但可以在不使用 .tmp 文件夹的情况下将 XML 文件流式传输到 S3?

我进行了研究,但仍然没有找到解决方案。

谢谢。

【问题讨论】:

    标签: amazon-web-services amazon-s3 aws-lambda


    【解决方案1】:

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

    【讨论】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-04
      • 1970-01-01
      • 2020-05-14
      • 1970-01-01
      • 1970-01-01
      • 2018-08-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多