AWS Lambda - 从 Lambda 队列中删除重复出现的失败事件



所以我有一些由 DynamoDB 流触发的 AWS lambda 函数。 我已经使用过几次"配置测试"功能,并且我自己触发了该功能,只需手动将虚拟数据添加到 DynamoDB 表即可。

我的问题是现在我有工作代码,但是因为我插入了一开始就错误的测试数据(与实际事件数据在流入时的外观不匹配(,每次我更新表或 lambda 函数本身时,它都不会处理其他事件,因为它挂在我的旧, 不好,测试数据。 作为一个较小的问题,它使CloudWatch变得混乱。

从理论上讲,我可以更改我的 Lambda 函数,使它们不处理实际数据,只处理我糟糕的测试数据,然后一旦我的真实数据开始显示,我就可以将我的 Lambda 函数切换回正常状态,但我觉得必须有更好的方法来做到这一点,我只是不知道。

所以我想知道是否有任何方法可以:

1 - 查看在 Lambda 中失败并等待重新处理的事件队列?

2 - 删除该队列中的特定事件,以便 Lambda 不会重新处理它们?

这两个问题的答案基本上是否定的。Lambda 函数卡住,因为它无法解析流,并且 AWS 重试失败的函数(无法将其关闭(。

您可以从 dynamodb 中删除测试数据。或者,在使用 Lambda 函数执行任何操作之前,请对实际event执行一些验证检查。始终这样做的好习惯,因此作为奖励,您将获得一个更面向未来的 Lambda 函数:)

如果验证检查失败(针对测试数据(,只需返回context.succeed();(Lambda 函数现在可以继续操作,而不是重试(。如果验证通过,它就会做它的事情。

检查可能是这样的:

exports.handler = function(event, context) {
    if (typeof event.somethingNotAvailableInTestAndAvailableOnLive === 'undefined') {
        context.succeed('Parsed test event...');
    }
    // Actual code...
}

您应该检查此语法以了解特定于 dynamodb 的语法。

最新更新