在AWS Firehose中添加故障处理

时间:2016-02-16 12:54:19

标签: amazon-web-services aws-lambda amazon-redshift amazon-sqs amazon-kinesis-firehose

我正在使用Lambda通过Firehose将批处理消息发送到Redshift。根据{{​​3}},如果存在某些传递问题(中毒消息,端点关闭等),Firehose将继续尝试24小时并删除该消息。我希望在X尝试失败后将失败的消息移动到另一个队列(基本上像benchmark)。最好的方法是什么,最好不要交叉检查目标Redshift数据库?

2 个答案:

答案 0 :(得分:0)

从您的链接,我假设您有兴趣跟踪PutRecord到Firehose Kinesis流的失败,而不是Kinesis - > S3 - >红移流程。

初始化Firehose客户端时,您实际上可以指定要进行的重试次数。如果收到异常(PutRecord无法访问流),Firehose将自动尝试您设置的最大重试次数;这是在SDK的引擎盖下完成的,所以你不会知道你的重试已经被超过,直到你的异常冒泡到你的功能。当您收到此异常时,您可以假定已超出重试次数。此异常处理可包括将消息发送到SQS队列。

您可以在此处了解有关Firehose客户端配置的更多信息,但这些配置并不为人所知,但非常有用。 Firehose ClientConfiguration

答案 1 :(得分:0)

这可以通过以下方式以不同的方式安静地完成,而不是从firehose直接进行。

  1. 你可以让你的lambda函数调用firehose写入S3。
  2. 创建从firehose读取的kinesis分析。
  3. 在kinesis分析时配置不同的流
    1. 成功记录(In-stream)将转移到将加载到红移的firehose。
    2. 错误记录(错误流)将被加载到另一个将加载到S3中的firehose中。
  4. 您已将成功记录加载到红移,并将不成功的记录过滤到S3。

    这是我们遵循的方法,如果您需要对此进行任何澄清,请与我们联系。