首页 > 解决方案 > 如何知道哪个 Lambda 向死信队列发送了消息?

问题描述

我使用 SNS 主题作为死信队列来处理由多个 Lambda 引发的错误。在错误消息中,有以下属性:

但是,我无法轻易找到哪个 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?

标签: aws-lambdaamazon-sns

解决方案


您可以使用 AWS CloudTrail 来确定执行了哪个 Lambda:

https://docs.aws.amazon.com/lambda/latest/dg/logging-using-cloudtrail.html


推荐阅读