将数据从 Kinesis(或 s3)传输到 RDS postgres chron 作业

Transfer data from Kinesis (or s3) to RDS postgres chron job

我是 AWS 的新手,我正在尝试寻找一种方法将数据从 Kinesis 流可靠地传输到 AWS RDS postgres 数据库 table。记录在进入的过程中需要进行一些小的转换,比如过滤器(不是所有的记录都会被插入,这取决于一个键),并被解析以插入到 postgres 中。目前,来自 Kinesis 流的数据正由 firehose 以镶木地板的形式转储到 S3 存储桶中。

我对执行此操作的许多可能方式感到有点迷茫,例如:

在非无服务器世界中,我会每隔一小时 运行 执行一次 chron 作业,这将获取最新 S3 存储桶分区(即 year/month/day/hour)中的文件,因此最新一小时,过滤掉RDS中不需要的记录,然后批量插入到RDS中。我不想让 EC2 实例在 95% 的时间内处于空闲状态来执行此操作。有什么建议吗?

感谢您的澄清。使用服务器以传统的 ETL 方式执行此操作有一些缺点。要么你需要让机器在大部分时间处于空闲状态,要么你需要在每次按需创建机器之前等待 - 就像你说的那样。

对于 Firehose,当您有大量实时数据要摄取时,IMO 会很有趣。关于 AWS Glue,对我来说它更像是一个 "managed" Apache Spark,因此如果你有一些数据处理逻辑要在大量批处理数据中实现,它会很有趣。但是根据你的描述,不是这样的吧?

总而言之,如果您认为一次插入的数据量总是仍然是几 MB,那么对我来说,最简单的解决方案是最好的,即 Kinesis -> Lambda -> RDS 可能还有另一个 Lambda S3 上的备份数据(Kinesis 保留期限制为 7 天)。从定价的角度来看,这特别有趣——显然你没有很多数据,Lambda 是按需执行的,例如通过批处理 1000 条 Kinesis 记录,所以这是省钱的好时机。否则,如果你希望有越来越多的数据,使用"Firehose -> Lambda"版本似乎不太适合我,因为你不会一次加载大量数据的数据库。