从amazon s3读取超过500MB的数据并存储在RDS PostgreSQL中

时间:2018-01-05 06:06:44

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

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

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

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

所以我无法完全保存我的文件。我在AWS听到过kinesis。作为AWS的新手,我不知道如何使用它?有没有人可以帮我搞定?

1 个答案:

答案 0 :(得分:0)

Kinesis可能不是您问题的解决方案。

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

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

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

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