使用 java 的 AWS Kinesis Lambda 转换 - 未返回一个或多个记录 ID

处理 AWS kinesis 时出现以下错误 - Lambda 函数到 S3


One or more record Ids were not returned. Ensure that the Lambda function returns all received record Ids.

以下是我的代码片段。


{

        List<KinesisFirehoseOutputRecord> results = event.getRecords().stream()

                .map(record -> {

                    KinesisFirehoseOutputRecord outRec = new KinesisFirehoseOutputRecord();

                    outRec.setRecordId(record.getRecordId());

                    outRec.setData(record.getData());

                    if (record.getData().toLowerCase().contains("moldovan")) {

                        outRec.setResult("Ok");

                    } else {

                        outRec.setResult("Dropped");

                    }



                    return outRec;

                }).collect(Collectors.toList());


        return new KinesisFirehoseResponse(results);

        }

如果我删除 if else 条件并添加 outRec.setResult("Ok");,它按预期工作正常。知道如何解决这个问题吗?


芜湖不芜
浏览 51回答 1
1回答

慕的地10843

Firehose 在函数执行后进行检查...处理的 recordID 数量等于发送到函数的 recordID。检查是对函数结束时返回的数组进行的。如果您删除流程中的任何元素,您必须分配状态为已删除。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java