在AWS API Gateway和Firehose中包装多条记录的解决方法如下所示:
首先,在API Gateway中创建一个POST方法,并设置集成类型为AWS Service。选择目标服务为Firehose,并选择对应的Firehose Delivery Stream。
在API Gateway集成请求设置中,选择“使用代理请求集成”。
在请求模板中,使用AWS API Gateway的映射模板语言来包装多条记录。以下是一个示例模板:
#set($inputRoot = $input.path('$'))
{
"Records": [
#foreach($record in $inputRoot)
{
"Data": "$util.base64Encode($record.body)",
"PartitionKey": "$record.partitionKey"
}#if($foreach.hasNext),#end
#end
]
}
上述模板遍历输入的记录,并将每条记录的body字段进行Base64编码,将partitionKey字段作为分区键。
在Firehose Delivery Stream的转换设置中,选择“源为Kinesis Data Firehose记录格式转换器”。
配置完成后,可以使用类似以下的请求进行测试:
POST /my-endpoint HTTP/1.1
Host: my-api-gateway-endpoint
Content-Type: application/json
[
{
"body": "Record 1",
"partitionKey": "1"
},
{
"body": "Record 2",
"partitionKey": "2"
},
{
"body": "Record 3",
"partitionKey": "3"
}
]
上述请求将发送包含三条记录的JSON数组到API Gateway的POST方法。
通过以上步骤,您可以在AWS API Gateway和Firehose中成功包装多条记录。