当前位置: 首页 > 知识库问答 >
问题:

AWS Firehose lambda函数调用给出错误的输出结构格式

廉展鹏
2023-03-14

当我使用put操作将数据对象插入aws firhose流时,它工作正常。由于在我的fire hose流上启用了lambda函数。因此调用了lambda函数,但给了我一个输出结构响应错误:

"errorMessage":"Invalid output structure: Please check your function and make sure the processed records contain valid result status of Dropped, Ok, or ProcessingFailed."

所以现在我已经创建了我的lambda函数,这样可以做出正确的输出结构:

import base64
import json

print('Loading function')

def lambda_handler(event, context):
    output=[]
    print('event'+str(event))
    for record in event['records']:
        payload = base64.b64decode(record['data'])
        print('payload'+str(payload))
        payload=base64.b64encode(payload)
        output_record={
            'recordId':record['recordId'],
            'result': 'Ok',
             'data':  base64.b64encode(json.dumps('hello'))
        }
    output.append(output_record)
    return { 'records': output }

现在,我得到了以下关于将“数据”字段编码为

"errorMessage": "a bytes-like object is required, not 'str'",

如果我将“hello”更改为b“hello”之类的字节,则会出现以下错误:

 "errorMessage": "Object of type bytes is not JSON serializable",

共有1个答案

濮金鑫
2023-03-14

导入json导入base 64导入gzip导入io导入zlib

deflambda_handler(事件,上下文):输出=[]

for record in event['records']:
    payload = base64.b64decode(record['data']).decode('utf-8')
    output_record = {
        'recordId': record['recordId'],
        'result': 'Ok',
        'data': base64.b64encode(payload.encode('utf-8')).decode('utf-8')
    }
    output.append(output_record)

return {'records': output}
 类似资料:
  • 问题内容: 我正在使用Python编写一些加密算法,但是我以前从未使用过Python。 首先,看一下这段代码,然后我将解释这个问题, x和y的值为, 我不明白代码的第三行。为了理解第三行,我不得不研究函数,我遇到了这个问题, zip函数帮助元组 根据这个问题的答案,代码, 将输出, 但是当我尝试打印时, 我得到这个输出, 为什么我的输出与原始输出不同? 问题答案: 在Python 3中返回一个迭代

  • 问题内容: 当前模式与功能之一不同时,属性表示法函数调用会出错。 我创建了一个函数 我正在尝试使用docs中描述的带有属性符号的函数: 但是收到一条错误消息: 使用功能符号的查询可以正常工作: 数据库已通过备份/还原从PostgreSQL 10迁移。 给出: UPD 。发现如果我将架构设置为默认值,则可以正常工作。 问题答案: 您自己找到了问题的根源。确切地说:函数的模式必须在current中的

  • 我试图找到大数的阶乘 我输入t个测试用例 每种情况下都有一个数字,我试图找到它的阶乘 我将阶乘的数字存储在向量中(动态数组) 每次乘以递减的n值 功能显示:显示矢量v中的所有数字 n=5的输出

  • 在下面的查询中,我使用了strftime函数来获取字符串格式的日期。它在sqlite数据库中运行良好。但是,当数据库更改为进程时,它抛出了一个错误,即“SQLSTATE[42883]:未定义函数:7错误:函数strftime(未知,没有时区的时间戳)不存在” 下面的代码在SQLite中工作,但在Postgres数据库中引发了一个错误

  • 问题内容: 根据Wolfram Mathematica: cos(50) = 0.6427876096865394 ; 但是这段Java代码: 给出 0.9649660284921133 。 有什么问题吗? 问题答案: 期望参数以弧度为单位。这将返回您需要的结果:

  • 当我尝试为kafka启动一个readStream时,我得到了以下错误,我的kafka已经启动并运行,我测试了它多次以确保它正在处理。Kafka主题也被创建。