我已按照以下说明,使用PutRecord成功设置了具有Kinesis Firehose与AWS API Gateway集成的API,并使用PutRecord(https://aws.mannem.me/?p=1152- note :它表示不安全,但是自从我点击以来需要它。
我正在尝试为PutRecordBatch设置API(本质上允许一次写入多个记录),但是我一直在获取
{ “ __type”:“ SerializationException”}
根据研究时间,当传入的API调用格式与Integration Request中注明的映射模板不匹配时,API网关会引发该错误。我正在努力弄清楚如何修复我的映射模板。
这是我的映射模板:
{
"StreamName": "$input.path('DeliveryStreamName')",
"Records": [
#foreach($elem in $input.path('$.Records'))
{
"Data": "$util.base64Encode($elem.Data)",
}#if($foreach.hasNext),#end
#end
]
}
这是我要发送的测试数据:
{
"DeliveryStreamName": "test",
"Records": [{
"Data": "SampleDataStringToFirehose"
},
{
"Data": "SampleDataStringToFirehose2"
}]
}
答案 0 :(得分:0)
太傻了,但是映射模板有一个错误,在末尾有一个多余的逗号
“数据”:“ $ util.base64Encode($ elem.Data)”,
造成问题的原因。下面是正确的版本:
{
"DeliveryStreamName": "$input.path('$.DeliveryStreamName')",
"Records": [
#foreach($elem in $input.path('$.Records'))
{
"Data": "$util.base64Encode($elem.Data)"
}#if($foreach.hasNext),#end
#end
]
}