Kinesis Firehose HTTP_Endpoint 目标响应格式

Posted

技术标签:

【中文标题】Kinesis Firehose HTTP_Endpoint 目标响应格式【英文标题】:Kinesis Firehose HTTP_Endpoint destination Response format 【发布时间】:2021-12-27 06:16:01 【问题描述】:

以 http_endpoint 作为目标的 Kinesis Firehose 响应的正确格式是什么。已经通过aws链接: https://docs.aws.amazon.com/firehose/latest/dev/httpdeliveryrequestresponse.html#responseformat

我在 python 中使用了以下 lambda 代码(集成在 api 中)以及许多其他选项,但不断收到以下错误消息。使用“使用演示数据进行测试”选项执行测试

示例代码:

def lambda_handler(event, context):
    data =
    headersD = 
    
    headersD['content-length'] = 0
    headersD['content-type'] = 'application/json'
    data['requestId'] = 'ed4acda5-034f-9f42-bba1-f29aea6d7d8f'
    data['timestamp'] = '1578090903599'
    bodyDetail= 
    data['body'] = ''
    data['headers'] =headersD
    data['statusCode']=200
    resp = json.dumps(data)
    return resp

日志中的错误响应:

从端点收到的响应无效。有关详细信息,请参阅 Firehose 文档中的 HTTP 端点故障排除。原因:。请求“request-Id”的响应未被识别为有效 JSON 或包含意外字段。收到的原始响应:200 "HttpEndpoint.InvalidResponseFromDestination"

【问题讨论】:

也许这个文档也有帮助docs.aws.amazon.com/firehose/latest/dev/… 【参考方案1】:

这是有效的示例输出(在 python 中):

    
responseBody = 
    "requestId": "requestId",
    "timestamp": 123456

resp = 
"headers": "Content-Type": "application/json", "Content-Length": 100,
"body": json.dumps(responseBody),
"statusCode": 200


return resp

【讨论】:

以上是关于Kinesis Firehose HTTP_Endpoint 目标响应格式的主要内容,如果未能解决你的问题,请参考以下文章

Amazon Kinesis Data Firehose

AWS Typescript CDK,尝试将 kinesis 流作为来源添加到 firehose

将 AWS Kinesis Firehose 回填到 Elasticsearch Service 失败记录

Kinesis Firehose HTTP_Endpoint 目标响应格式

按事件时间对 Kinesis firehose S3 记录进行分区

Amazon Kinesis Data Firehose 数据转换