Python字典转JSON提交Kinesis遇类型错误求解决
解决Python推送Kinesis流的JSON记录失败问题
问题出在put_records接口的Records参数格式要求上,你之前的调用都不符合Kinesis的参数规范:
错误原因
put_records要求Records必须是列表或元组,而非单个字符串或字典- 列表中的每个元素必须是包含
Data和PartitionKey的字典结构,这两个字段是必填项
正确实现代码
import json # 你的字典对象 o = {'Name':'John Doe'} # 构造符合要求的Records列表 records = [ { 'Data': json.dumps(o).encode('utf-8'), # 将字典转为JSON字符串后编码为bytes 'PartitionKey': 'user-123' # 根据业务逻辑设置分区键,不可省略 } ] # 调用Kinesis接口 response = kinesis_client.put_records( StreamName='kinesis_test_stream', Records=records ) # 可选:检查推送结果 if response['FailedRecordCount'] > 0: print("部分记录推送失败,需处理重试")
关键细节说明
Data字段必须是bytes类型:Kinesis要求数据以二进制形式传输,所以需要将JSON字符串通过encode('utf-8')转为bytesPartitionKey是必填项:用于Kinesis确定将记录发送到哪个分片,可根据业务维度(如用户ID、地区等)设置- 即使只推送单条记录,也要放在列表中:
put_records是批量写入接口,列表是强制格式
内容的提问来源于stack exchange,提问作者Blav Orian
相关产品推荐
相关产品推荐

