

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

# 处理数据转换失败
<a name="data-transformation-failure-handling"></a>

如果您的 Lambda 函数调用因网络超时或达到 Lambda 调用限制而失败，Amazon Data Firehose 默认会重试调用 3 次。如果调用失败，Amazon Data Firehose 将跳过该批记录。跳过的记录会被视为未被成功处理的记录。您可以使用或 `[UpdateDestination](https://docs.aws.amazon.com/firehose/latest/APIReference/API_UpdateDestination.html)` API 指定或覆盖重试选项。[CreateDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html)对于此类故障，您可以将调用错误记录到 Amazon Lo CloudWatch gs 中。有关更多信息，请参阅 [使用日志监控亚马逊数据 Firehose CloudWatch](monitoring-with-cloudwatch-logs.md)。

如果记录的数据转换的状态为 `ProcessingFailed`，则 Amazon Data Firehose 会将记录视为处理失败。对于此类故障，您可以通过 Lambda 函数向 Amazon CloudWatch 日志发送错误日志。有关更多信息，请参阅*AWS Lambda 开发者指南 AWS Lambda*中的[访问 Amazon CloudWatch 日志](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions-logs.html)。

如果数据转换失败，则未被成功处理的记录会传输到您在 `processing-failed` 文件夹中的 S3 存储桶。这些记录具有如下格式：

```
{
    "attemptsMade": "count",
    "arrivalTimestamp": "timestamp",
    "errorCode": "code",
    "errorMessage": "message",
    "attemptEndingTimestamp": "timestamp",
    "rawData": "data",
    "lambdaArn": "arn"
}
```

`attemptsMade`  
尝试的调用请求数。

`arrivalTimestamp`  
Amazon Data Firehose 收到记录的时间。

`errorCode`  
Lambda 返回的 HTTP 错误代码。

`errorMessage`  
Lambda 返回的错误消息。

`attemptEndingTimestamp`  
Amazon Data Firehose 停止尝试 Lambda 调用的时间。

`rawData`  
经过 base64 编码的记录数据。

`lambdaArn`  
Lambda 函数的 Amazon 资源名称（ARN）。