我已在Lambda函数中的Kinesis数据流触发器失败时将SNS附加为目标。对于任何类型的故障,我都会收到以下格式的电子邮件:
{"requestContext":{"requestId":"xxx","functionArn":"xxx","condition":"RetryAttemptsExhausted","approximateInvokeCount":2},"responseContext":{"statusCode":200,"executedVersion":"$LATEST","functionError":"Unhandled"},"version":"1.0","timestamp":"2021-06-30T15:19:20.847Z","KinesisBatchInfo":{"shardId":"shardId-xxx","startSequenceNumber":"xxx","endSequenceNumber":"xxxx","approximateArrivalOfFirstRecord":"xxx","approximateArrivalOfLastRecord":"xxx","batchSize":100,"streamArn":"xxx"}}
在这里,我将functionError
作为Unhandled
接收。然而我想知道Lambda失败的确切原因。此SNS消息既不包含错误消息,也不包含lambda执行ARN或日志流,我可以查看这些日志流以了解错误详细信息。在我的Lambda代码中,我正在执行以下操作:
def lambda_handler(event, context):
try:
for record in event['Records']:
#Kinesis data is base64 encoded so decoding here
payload = base64.b64decode(record["kinesis"]["data"])
except Exception as e:
print(e)
raise e
堆栈跟踪/错误确实会打印在CloudWatch日志中,但SNS消息不包含任何错误信息。是否有人能指导我如何在这个SNS消息中包含错误详细信息,或者是否需要在代码中进行一些更改以在SNS消息中包含错误信息。谢谢你在这方面的帮助
你需要自己做这件事。您必须在代码中自己发送此类消息,而不是使用内置lambdas目的地。因此,在
except
块中,您必须向队列提供sns消息:相关问题 更多 >
编程相关推荐