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

Amazon web services AWS Lambda-从Lambda队列中删除重复出现的失败事件,amazon-web-services,lambda,amazon-dynamodb,amazon-cloudwatch,Amazon Web Services,Lambda,Amazon Dynamodb,Amazon Cloudwatch,所以我有几个AWS lambda函数是由DynamoDB流触发的。我已经多次使用了“配置测试”功能,我自己也触发了该功能,只需手动将虚拟数据添加到DynamoDB表中 我的问题是,现在我有了工作代码,但因为我插入了一开始就错误的测试数据(与流入的实际事件数据的外观不匹配),每次我更新表或lambda函数本身时,它都不会处理其他事件,因为它挂起了我的旧的、坏的,测试数据。作为一个较小的问题,它会使CloudWatch变得混乱 理论上,我可以更改Lambda函数,使其不适用于实际数据,只适用于我的坏

所以我有几个AWS lambda函数是由DynamoDB流触发的。我已经多次使用了“配置测试”功能,我自己也触发了该功能,只需手动将虚拟数据添加到DynamoDB表中

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

理论上,我可以更改Lambda函数,使其不适用于实际数据,只适用于我的坏测试数据,然后一旦我的实际数据开始显示,我就可以将Lambda函数切换回正常状态,但我觉得必须有一种更好的方法来实现这一点,我只是不知道

因此,我想知道是否有办法:

1-查看Lambda中失败并等待重新处理的事件队列?
2-删除该队列中的特定事件,以便Lambda不会重新处理它们?两者的答案基本上都是否定的。Lambda函数被卡住,因为它无法解析流,AWS重试失败的函数(无法关闭)

您可以从dynamodb中删除测试数据。或者,在使用Lambda函数执行任何操作之前,对实际的
事件执行一些验证检查。始终做到这一点是一个很好的实践,因此作为奖励,您可以获得一个更具未来证明的Lambda函数:)

如果验证检查失败(在测试数据上),只需返回
context.succeed()(Lambda函数现在可以继续,而不是重试)。如果验证通过,它将完成它的工作

支票可以是这样的:

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

    // Actual code...
}

您应该检查一下dynamodb特定的语法。

我想这可能也可以用“如何从dynamodb流中删除内容”…如果您删除dynamodb中的测试数据,它在DynamoDB Streams中创建一个新的Delete事件:D如果您尝试更新DynamoDB中的记录,它将创建一个新的更新事件:D如果您尝试执行任何操作,它将创建新事件。关于验证事件的好建议。