我正在使用SNS主题作为死信队列来处理多个Lambda引发的错误。在错误消息中,具有以下属性:
RequestID,
ErrorCode,
ErrorMessage,
但是,我无法轻易找到哪个Lambda引发了错误,因为与该消息无关的内容(例如:ARN,函数名...)
尽管可以在CloudWatch上查找请求ID或创建多个主题,但应该有一种更简单的方法来查找哪个Lambda引发了错误。下面是接收到的消息的结构:
{
"Records": [
{
"EventSource": "aws:sns",
"EventVersion": "1.0",
"EventSubscriptionArn": "",
"Sns": {
"Type": "Notification",
"MessageId": "",
"TopicArn": "",
"Subject": null,
"Message": "",
"Timestamp": "",
"SignatureVersion": "",
"Signature": "",
"SigningCertUrl": "",
"UnsubscribeUrl": "",
"MessageAttributes": {
"RequestID": {
"Type": "String",
"Value": ""
},
"ErrorCode": {
"Type": "String",
"Value": "200"
},
"ErrorMessage": {
"Type": "String",
"Value": "test"
}
}
}
}
]
}
是否有任何方法可以在触发该错误消息的Lambda上添加信息(例如ARN)?
答案 0 :(得分:0)
您可以使用AWS CloudTrail识别执行了哪个Lambda:
https://docs.aws.amazon.com/lambda/latest/dg/logging-using-cloudtrail.html
答案 1 :(得分:0)
每个Lambda函数应具有一个DLQ。这会让您知道死信的来源。
答案 2 :(得分:0)
我最终进行了配置:
此基础架构可能看起来有点复杂,但运作良好。它只允许在每个lambda配置文件中添加一行唯一的onError: ...
代码。