正如你所说,目前不支持此功能,但是使用firehose的最新添加功能,您可以使用一个firehose将数据写入3个目标。
但我不确定这是否是最佳方法,您需要比较AWS成本和开发成本,然后决定。
如果您想尝试,请按照以下步骤操作:
配置firehose将数据写入redshift,中间文件将存储在s3上(可能会删除中间文件),因此您可以使用桶复制或触发新文件通知并使用lambda函数移动到另一个存储桶。同时,为了将每个记录写入Elasticsearch,您将使用firehose lambda连接,该连接在firehose控制台中称为数据转换(下面有链接)。对于每个firehose收到的记录,编写简单的elasticsearch http post写入请求,以便您在3个目标上拥有数据。
https://aws.amazon.com/blogs/compute/amazon-kinesis-firehose-data-transformation-with-aws-lambda/
如我之前所说,这可能会更加昂贵,使用2个firehose进行redshift写和ES+S3写更加容易。
我目前正在研究类似的解决方案。我发现最好的方法是先设置Kinesis流,然后将Firehose作为消费者/传递流添加进去。再加上一个Lambda函数作为另外一个消费者,可以用来将数据发送到任何目的地。在我的情况下,我使用了Dynamo DB。