【问题标题】:Processing huge files using AWS S3 and Lambda使用 AWS S3 和 Lambda 处理大文件
【发布时间】:2020-05-14 05:14:05
【问题描述】:

我正在尝试解密定期到达我们 s3 存储桶的文件。如果文件大小很大(例如 10GB),我该如何处理,因为 Lambda 的计算资源是有限的。我不确定是否有必要将整个文件下载到 Lambda 中并执行解密,还是有其他方法可以将文件分块并进行处理?

编辑:- 此处处理文件包括解密文件和解析每一行并将其写入持久存储,如 SQL 队列或数据库。

【问题讨论】:

  • 一个问题应该包含你目前使用的代码并解释它有什么问题。现在这个问题太笼统了。但通常你不会将 10GB 读入内存
  • 我还没有开始编写任何代码,但想使用 S3 和 Lambda 实现解决方案。对我来说未知的事实是我们可以在缓冲区块中处理来自 S3 的文件而不是下载整个文件。当我说将文件分成块stackoverflow.com/questions/34447037/…时,我特别指的是这个答案
  • 然后请编辑您的问题以包含该代码、指向另一个问题的链接以及您尝试过的代码。你必须先尝试一下。
  • @Nisantasi “处理”是什么意思?程序将如何处理这些数据?如果只是计算某些关键字的出现次数,则文件大小无关紧要。但是,如果它正在存储文件中的信息,那么它会很重要。请编辑您的问题以解释您想要实现的实际流程(例如解密、处理、计算、返回结果等)。
  • @John 感谢您的评论我已根据您的输入更新了问题。

标签: java amazon-s3 aws-lambda batch-processing pgp


【解决方案1】:

您可以在 GetObjectRequest 中设置字节范围以从 S3 对象加载特定范围的字节。

以下示例来自AWS官方关于S3 GetObject API的文档:

// Get a range of bytes from an object and print the bytes.
            GetObjectRequest rangeObjectRequest = new GetObjectRequest(bucketName, key).withRange(0, 9);
            objectPortion = s3Client.getObject(rangeObjectRequest);
            System.out.println("Printing bytes retrieved.");
            displayTextInputStream(objectPortion.getObjectContent());

有关更多信息,您可以访问此处的文档: https://docs.aws.amazon.com/AmazonS3/latest/userguide/download-objects.html

【讨论】:

    猜你喜欢
    • 2017-01-10
    • 2021-03-07
    • 2022-01-24
    • 2020-04-22
    • 2017-05-11
    • 2019-11-20
    • 2022-11-13
    • 2017-05-05
    • 1970-01-01
    相关资源
    最近更新 更多