【发布时间】:2021-09-12 21:52:31
【问题描述】:
我已将 SNS 作为我的 Lambda 函数中 Kinesis 数据流触发器失败的目标。在任何类型的失败中,我都会收到一封格式如下的电子邮件:
{"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"}}
在这里,我以Unhandled 接收functionError。而我想知道 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 Logs 中,但 SNS 消息不包含任何错误信息。有人可以指导我如何在此 SNS 消息中包含错误详细信息,或者是否需要在代码中进行一些更改以在 SNS 消息中包含错误信息。感谢您在这方面的任何帮助!
【问题讨论】:
标签: python amazon-web-services aws-lambda amazon-sns amazon-kinesis