Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python AWS批处理操作-完成报告,无消息_Python_Amazon Web Services_Amazon S3_Aws Lambda - Fatal编程技术网

Python AWS批处理操作-完成报告,无消息

Python AWS批处理操作-完成报告,无消息,python,amazon-web-services,amazon-s3,aws-lambda,Python,Amazon Web Services,Amazon S3,Aws Lambda,我在lambda函数中对大量csv文件执行批处理操作。我希望在我的完成报告中包含错误/异常的内容。我只有5%的错误文件,所以lambda可以正常工作,但它不会在报告中写入错误 当我在导致错误的文件上测试lambda时,我看到“ResultMessage”与error或exception相同。我尝试添加一个字符串,但最后一列总是空的 你能帮我吗 除ClientError为e外: #如果请求超时,则标记为临时故障 #S3批处理操作将使任务重试。如果 #收到任何其他异常,标记为永久性故障。 error

我在lambda函数中对大量csv文件执行批处理操作。我希望在我的完成报告中包含错误/异常的内容。我只有5%的错误文件,所以lambda可以正常工作,但它不会在报告中写入错误

当我在导致错误的文件上测试lambda时,我看到“ResultMessage”与error或exception相同。我尝试添加一个字符串,但最后一列总是空的

你能帮我吗

除ClientError为e外:
#如果请求超时,则标记为临时故障
#S3批处理操作将使任务重试。如果
#收到任何其他异常,标记为永久性故障。
errorCode=e.response['Error']['Code']
errorMessage=e.response['Error']['Message']
如果errorCode=='RequestTimeout':
结果代码='TemporaryFailure'
resultString='由于超时,请重试对Amazon S3的请求。'
其他:
结果代码='PermanentFailure'
resultString='{}:{}'。格式(errorCode,errorMessage)
例外情况除外,如e:
#捕获所有异常以使任务永久失败
结果代码='PermanentFailure'
结果字符串='异常:{}'。格式(e)
最后:
结果.append({
“taskId”:taskId,
“结果代码”:结果代码,
“ResultMessage”:resultString
})   
返回{
“invocationSchemaVersion”:invocationSchemaVersion,
“调用ID”:调用ID,
“结果”:结果
}
csv失败的报告的示例行


您的代码没有明显的错误

我查了一下:

响应和结果代码

S3批处理操作期望从Lambda函数获得两级代码。第一个是整个请求的响应代码,第二个是每个任务的结果代码。下表包含响应代码

响应代码 描述 成功 任务正常完成。如果请求作业完成报告,则任务的结果字符串将包含在报告中。 暂时性失败 任务暂时失败,将在作业完成前重新驱动。结果字符串被忽略。如果这是最终重新驱动,则错误消息将包含在最终报告中。 永久性失败 这项任务遭到了永久性的失败。如果请求作业完成报告,则该任务将标记为失败,并包含错误消息字符串。
请向我们展示try块——至少是您正在进行的AWS API调用,如果没有它,很难猜测可能会发生什么错误,因为我们不知道您正在处理什么数据。