我对AWS还是很陌生,我正在尝试寻找一种方法来可靠地将数据从Kinesis流传输到AWS RDS postgres数据库表。记录在进行过程中将需要进行一些小的转换,例如过滤器(并非所有记录都将被插入,具体取决于键),并进行解析以将其插入到postgres中。目前,Kinesis流中的数据正由消防水龙作为木地板倾倒到S3桶中。
我似乎在这样做的许多可能方式中迷失了,例如:
在非无服务器的世界中,我将每隔一个小时运行一次chron作业,这会将文件存储在最新的S3存储桶分区(即年/月/日/小时)中,因此,最近一小时并过滤掉RDS中不需要的记录,然后将其余的大量插入RDS中。我不想让EC2实例在95%的时间内都处于空闲状态。有什么建议吗?
答案 0 :(得分:1)
感谢您的澄清。用服务器的传统ETL方式执行此操作存在一些缺点。要么您需要大部分时间使计算机保持空闲状态,要么每次都需要等待,然后才能按需创建计算机-正如您所说的那样。
对于Firehose,IMO,当您要提取大量实时数据时,这很有趣。关于AWS Glue,对我来说,它更像是一个“托管” Apache Spark,因此,如果您有一些要在大量批处理数据中实现的数据处理逻辑,这可能会很有趣。但是根据您的描述,不是这样吗?
总而言之,如果您一次认为插入的数据量始终仍然只有几个mb,对我来说,最简单的解决方案是最好的,即Kinesis-> Lambda-> RDS,也许还有另一个Lambda来备份数据在S3上(运动保留时间限制为7天)。从定价角度来看,这尤其有趣-显然您没有很多数据,Lambda是按需执行的,例如通过批量处理1000个Kinesis记录,因此这是节省一些钱的好机会。否则,如果您希望拥有越来越多的数据,则使用“ Firehose-> Lambda”版本似乎不太适合我,因为您不会立即加载大量数据。