

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 對 Amazon Data Firehose 中的錯誤進行故障診斷
<a name="troubleshooting"></a>

如果 Firehose 在交付或處理資料時發生錯誤，它會重試，直到設定的重試持續時間過期為止。如果重試持續時間在資料成功交付之前結束，Firehose 會將資料備份到設定的 S3 備份儲存貯體。如果目的地是 Amazon S3 且交付失敗，或交付至備份 S3 儲存貯體失敗，Firehose 會一直重試，直到保留期間結束為止。

如需使用 CloudWatch 追蹤交付錯誤的相關資訊，請參閱 [使用 CloudWatch Logs 監控 Amazon Data Firehose](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 會無限期重試下列操作：`GetRecords`、 `DescribeStream`和 `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`指標。

------