我有一个aws lambda函数,可连接到Kinesis Firehose传递流。在我的日志中,lambda函数可以完美执行并返回我想要的数据。
在“监视”部分的Kinesis Firehose交付流仪表板上,由于这些图中有数据,因此我似乎收到了传入字节和传入记录。在ExecuteProcessing Duration图中也有数据,但是ExecuteProcessing Success图在0处显示一行,因此我猜测它失败了。
在Elasticsearch日志中,我得到
Lambda.FunctionError,并显示以下消息:Lambda函数 已成功调用,但返回了错误结果。
我对使用AWS并不陌生,但是在调试此错误代码时遇到了麻烦。任何帮助表示赞赏。
答案 0 :(得分:1)
您必须检查的第一件事是函数的返回输出。请记住,您必须以以下结构返回具有相同记录数的数组:
output_record = {
'recordId': record['recordId'],
'result': 'Ok',
'data': base64.b64encode(json.dumps(payload).encode('utf-8')).decode('utf-8')
}
output.append(output_record)
**return {'records': output}**
如果忘记返回此数组,则会收到此错误消息。
答案 1 :(得分:0)
如果Lambda函数返回错误,则您应该能够在CloudWatch日志中找到有关该函数的更多信息。 These docs描述了访问日志的不同方法。如果日志没有提供足够的信息,则可以考虑更改功能以将更多信息写入stdout或stderr。