【问题标题】:Reading more than 500MB data from amazon s3 and storing in RDS PostgreSQL从 amazon s3 读取超过 500MB 的数据并存储在 RDS PostgreSQL 中
【发布时间】:2018-06-14 22:33:15
【问题描述】:

我有一个 RDS PostgreSQL 实例。我有自己的s3。在我的项目中,我将在 s3 中上传一些 excel 文件。当文件落在 s3 上时,我需要读取 excel 文件并将其存储到数据库中。

我使用 java 创建了一个 lambda 函数并将触发器添加到 lambda 函数。当文件落在 s3 上时,我的 lambda 函数会自动调用并读取文件并将其保存到数据库中。

但问题是在我的情况下,我的文件一次超过 100MB。 lambda 只工作 5 分钟。

所以我无法将我的文件完全保存到数据库中。我在 AWS 中听到了 kinesis。作为AWS的新手,我不知道如何使用它?有谁可以帮我弄这个吗?

【问题讨论】:

    标签: postgresql amazon-web-services amazon-s3 lambda amazon-kinesis


    【解决方案1】:

    Kinesis 可能无法解决您的问题。

    您的情况的限制因素是 Lambda 函数的执行时间限制,最高为 5 分钟。

    为了延长执行时间,我会使用 SQS 队列和 EC2 实例。当文件落入您的 S3 存储桶时,您可以将存储桶配置为将事件发布到 SQS 队列。请参阅示例 here 了解如何执行此操作。

    EC2 实例定期轮询 SQS 队列以查找新事件。当一个新事件被放入队列时,EC2 实例检索该事件,并将 S3 文件的数据复制到您的数据库中。

    编辑:Lambda 现在在执行 15 分钟而不是 5 分钟时停止

    【讨论】:

    • 嗨@spg。正如你所建议的,我找到了另一种解决方案。谢谢!!!但你知道我使用了 kinesis 服务,其中包括 lambda 对我有用。实际上我必须一次插入 90 万条记录。但目前我有一个 15MB 的文件。通过使用 kinesis,它现在可以正常工作了。现在我很困惑最好的方法是你的建议吗?还是我在使用当前代码插入 80 万条记录时失败了?
    • AWS 增加了对 Lambda 的限制docs.aws.amazon.com/lambda/latest/dg/limits.html
    猜你喜欢
    • 2021-10-16
    • 1970-01-01
    • 2021-03-11
    • 2015-08-04
    • 1970-01-01
    • 2013-04-06
    • 2015-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多