如何知道哪个 Lambda 向死信队列发送了消息?
How to know which Lambda sent a message to the Dead Letter Queue?
我使用 SNS 主题作为死信队列来处理多个 Lambda 抛出的错误。在错误消息中,有以下属性:
RequestID,
错误代码,
错误消息,
但是,我无法轻易找到哪个 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 CloudTrail 来识别执行了哪个 Lambda:
https://docs.aws.amazon.com/lambda/latest/dg/logging-using-cloudtrail.html
每个 Lambda 函数应该有一个 DLQ。这将使您知道死信的来源。
我结束了配置:
- 每个 lambda DLQ 一个唯一的 SNS 主题。
- 监听上述主题并将请求 ID 存储在 S3 中的 lambda
- CloudTrail 上的跟踪记录每个 lambda 调用
- 与 S3 和 cloudtrail 日志中失败的请求 ID 匹配的 lambda。后者提供失败的 lambda 的名称。
此基础架构可能看起来有点复杂,但运行良好。它只允许在每个 lambda 配置文件中添加唯一的 onError: ...
行代码。
我使用 SNS 主题作为死信队列来处理多个 Lambda 抛出的错误。在错误消息中,有以下属性:
RequestID,
错误代码,
错误消息,
但是,我无法轻易找到哪个 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 CloudTrail 来识别执行了哪个 Lambda:
https://docs.aws.amazon.com/lambda/latest/dg/logging-using-cloudtrail.html
每个 Lambda 函数应该有一个 DLQ。这将使您知道死信的来源。
我结束了配置:
- 每个 lambda DLQ 一个唯一的 SNS 主题。
- 监听上述主题并将请求 ID 存储在 S3 中的 lambda
- CloudTrail 上的跟踪记录每个 lambda 调用
- 与 S3 和 cloudtrail 日志中失败的请求 ID 匹配的 lambda。后者提供失败的 lambda 的名称。
此基础架构可能看起来有点复杂,但运行良好。它只允许在每个 lambda 配置文件中添加唯一的 onError: ...
行代码。