AWS Lambda - 从 Lambda 队列中删除重复发生的失败事件
AWS Lambda - Deleting Recurring Failed Events From Lambda Queue
所以我有一些由 DynamoDB 流触发的 AWS lambda 函数。我已经使用了几次 'configure test' 功能,并且我通过手动向 DynamoDB table.
添加虚拟数据来触发该功能
我的问题是现在我有了工作代码,但是因为我首先插入了错误的测试数据(与流入的实际事件数据的外观不匹配),每次我更新 table 或 lambda 函数本身时,它不会处理其他事件,因为它会挂在我旧的、错误的测试数据上。 作为一个较小的问题, 它使 CloudWatch 变得混乱。
理论上,我可以更改我的 Lambda 函数,使它们不处理实际数据,只处理我的错误测试数据,然后一旦我的真实数据开始出现,我就可以切换我的 Lambda 函数恢复正常,但我觉得必须有更好的方法来做到这一点,我只是不知道。
所以我想知道有没有办法:
1 - 查看 Lambda 中失败并等待重新处理的事件队列?
2 - 删除该队列中的特定事件,以免 Lambda 重新处理它们?
两者的答案基本是否定的。 Lambda 函数被卡住,因为它无法解析流并且 AWS 重试失败的函数(无法关闭它)。
您可以从dynamodb中删除测试数据。或者,在您对 Lambda 函数执行任何操作之前,对实际的 event
进行一些验证检查。始终这样做的好习惯,作为奖励,您可以获得更适合未来的 Lambda 函数:)
如果验证检查失败(针对测试数据),只需 return context.succeed();
(Lambda 函数现在可以继续而不是重试)。如果验证通过,它就会执行它的操作。
支票可能是这样的:
exports.handler = function(event, context) {
if (typeof event.somethingNotAvailableInTestAndAvailableOnLive === 'undefined') {
context.succeed('Parsed test event...');
}
// Actual code...
}
您应该检查这里的 dynamodb 特定语法。
所以我有一些由 DynamoDB 流触发的 AWS lambda 函数。我已经使用了几次 'configure test' 功能,并且我通过手动向 DynamoDB table.
添加虚拟数据来触发该功能我的问题是现在我有了工作代码,但是因为我首先插入了错误的测试数据(与流入的实际事件数据的外观不匹配),每次我更新 table 或 lambda 函数本身时,它不会处理其他事件,因为它会挂在我旧的、错误的测试数据上。 作为一个较小的问题, 它使 CloudWatch 变得混乱。
理论上,我可以更改我的 Lambda 函数,使它们不处理实际数据,只处理我的错误测试数据,然后一旦我的真实数据开始出现,我就可以切换我的 Lambda 函数恢复正常,但我觉得必须有更好的方法来做到这一点,我只是不知道。
所以我想知道有没有办法:
1 - 查看 Lambda 中失败并等待重新处理的事件队列?
2 - 删除该队列中的特定事件,以免 Lambda 重新处理它们?
两者的答案基本是否定的。 Lambda 函数被卡住,因为它无法解析流并且 AWS 重试失败的函数(无法关闭它)。
您可以从dynamodb中删除测试数据。或者,在您对 Lambda 函数执行任何操作之前,对实际的 event
进行一些验证检查。始终这样做的好习惯,作为奖励,您可以获得更适合未来的 Lambda 函数:)
如果验证检查失败(针对测试数据),只需 return context.succeed();
(Lambda 函数现在可以继续而不是重试)。如果验证通过,它就会执行它的操作。
支票可能是这样的:
exports.handler = function(event, context) {
if (typeof event.somethingNotAvailableInTestAndAvailableOnLive === 'undefined') {
context.succeed('Parsed test event...');
}
// Actual code...
}
您应该检查这里的 dynamodb 特定语法。