如何丢弃记录?

How to discard records?

我将事件发送到 AWS Kinesis,这些事件由 AWS lambda 函数处理。 但是,如果 lambda 抛出一些错误,记录不会被丢弃,而是一遍又一遍地处理,阻止新记录的处理。

我宁愿跳过错误记录并消化新记录。 我不明白该怎么做。

lambda 函数捕获任何异常,因此它不应该给出任何执行错误。

下面是 python 中的片段。

我知道应该在 "retention" 期间(默认 24 小时)重试 lambda,但我想放弃并最终记录任何类型的错误

def ProcessKinesisRecords(event, context):
    body = "ok"   
    response_code = 200
    for record in event['Records']:
        # Kinesis data is base64 encoded so decode here
        try:
            payload = base64.b64decode(record["kinesis"]["data"])
            #...payload processing
        except Exception as e:
            body = e 

    return {"isBase64Encoded": True, "statusCode": response_code, "headers": { "x-custom-header": "headerValue" }, "body": body}

我想我遵循了这个...但我不明白我做错了什么

好吧,实际上我并没有捕捉到所有异常。 在 python

except Exception as e:

没有捕获所有异常:Difference between except: and except Exception as e: in Python

它不捕获 BaseException 或系统退出异常 SystemExit、KeyboardInterrupt 和 GeneratorExit。 这就是它不起作用的原因。