有没有办法从S3存储桶中将数据放入Kinesis Firehose?

时间:2017-08-14 20:27:06

标签: amazon-web-services amazon-s3 amazon-ec2 amazon-redshift amazon-kinesis

我想通过Firehose将流式数据从S3存储桶写入Redshift,因为数据实时流式传输(每分钟600个文件),我不希望任何形式的数据丢失。

如何将S3中的数据放入Kinesis Firehose?

2 个答案:

答案 0 :(得分:1)

您的情况似乎是:

  • 文件随机出现在S3中的SFTP服务器
  • 您想将数据加载到Redshift

有两种基本方法可以做到这一点:

  • 将数据直接从Amazon S3加载到Amazon Redshift或
  • 通过Amazon Kinesis Firehose发送数据

坦率地说,通过Kinesis Firehose发送它几乎没有什么好处,因为Kinesis会简单地将其批量处理,将其存储到临时S3文件中,然后将其加载到Redshift中。因此,这不是一种有益的方法。

相反,我建议:

  • 在Amazon S3存储桶上配置一个事件,以便在创建文件时将消息发送到 Amazon SQS队列
  • 配置 Amazon CloudWatch Events 以定期触发AWS Lambda功能(例如,每小时,或15分钟,或满足您业务需求的任何内容)
  • AWS Lambda函数从SQS读取消息并构造manifest file,然后触发Redshift以导入清单文件中列出的文件

这是一个简单的,松散耦合的解决方案,它比Firehose方法简单得多(它需要以某种方式读取每个文件并将内容发送到Firehose)。

答案 1 :(得分:0)

它实际上是为了做相反的事情,Firehose将来自 Amazon S3的传入流数据发送到 Amazon S3而不是,而不是S3它可以将数据发送到其他服务Redshift和Elasticsearch Service。

我不知道这是否会解决您的问题,但您可以使用COPY from S3进行红移。

希望它会有所帮助!