

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 对 Amazon Data Firehose 中的错误进行问题排查
<a name="troubleshooting"></a>

如果在传输或处理数据时 Firehose 遇到错误，则它会一直重试，直至超过配置的重试持续时间。如果重试持续时间在成功传输数据之前结束，则 Firehose 会将数据备份到配置的 S3 备份存储桶。如果目的地是 Amazon S3，并且传输失败或传输到备份 S3 存储桶失败，Firehose 会不断重试，直到保留期结束。

有关使用追踪配送错误的信息 CloudWatch，请参阅[使用日志监控亚马逊数据 Firehose CloudWatch](monitoring-with-cloudwatch-logs.md)。

------
#### [ Direct PUT ]

对于 `DirectPut` Firehose 流，Firehose 会将记录保留 24 小时。对于其数据来源为 Kinesis 数据流的 Firehose 流，您可以按照[更改数据留存期](https://docs.aws.amazon.com/streams/latest/dev/kinesis-extended-retention.html)中的说明更改保留期。在这种情况下，Firehose 会无限地重试以下操作：`DescribeStream`、`GetRecords` 和 `GetShardIterator`。

如果 Firehose 流使用 `DirectPut`，请检查 `IncomingBytes` 和 `IncomingRecords` 指标，查看是否有传入流量。如果您正在使用 `PutRecord` 或 `PutRecordBatch`，请务必捕获异常并重试。我们建议使用带指数退避的重试策略，并且提供抖动和多次重试功能。此外，如果您使用 `PutRecordBatch` API，请确保您的代码检查响应[FailedPutCount](https://docs.aws.amazon.com/firehose/latest/APIReference/API_PutRecordBatch.html#Firehose-PutRecordBatch-response-FailedPutCount)中的值，即使 API 调用成功也是如此。

------
#### [ Kinesis Data Stream ]

如果 Firehose 流使用 Kinesis 数据流作为源，请检查源数据流的 `IncomingBytes` 和 `IncomingRecords` 指标。此外，请确保为 Firehose 流发出 `DataReadFromKinesisStream.Bytes` 和 `DataReadFromKinesisStream.Records` 指标。

------