我已将API网关配置为Kinesis代理,如Amazon教程中所述,用于将记录放入Kinesis流中。
集成请求的HTTP标头为:
stream-name
映射到 method.request.header.stream-name
partition-key
映射到 method.request.header.partition-key
Content-Type
映射到 application/x-amz-json-1.1
内容类型的主体映射模板application/json
如下所示:
{
"StreamName": "$input.params('stream-name')",
"PartitionKey": "$input.params('partition-key')",
"Data": "$util.base64Encode({"rows": "$input.json('$')", "uuid": "$input.params('uuid')"})"
}
数据作为JSON请求有效负载输入。我们应该uuid
在Kinesis的数据有效载荷中添加一个参数作为JSON对象键,但是发送到Kinesis的编码数据不是JSON对象。
需要将参数uuid
作为json-object键添加到运动学的数据有效载荷中。我面临的问题是,发送到kinesis的编码数据不是JSON对象。
我希望发送到Kinesis的数据应该是JSON对象:
{
"rows": [{"id": 1, "name": "a"}, {"id": 2, "name": "b"}],
"uuid": "0001"
}
但是发送给Kinesis的实际数据如下所示:
{
rows=[{"id": 1, "name": "a"}, {"id": 2, "name": "b"}],
uuid=0001
}
如何将JSON对象从API网关发送到Kinesis?我一直在尝试,$util.parseJson
但是找不到这种情况的解决方案。
您需要在速度模板中转义双引号
#set($event = "{
""rows"": ""$input.json('$')"",
""uuid"": ""$input.params('uuid')"",
}")
{
"StreamName": "$input.params('stream-name')",
"Data": "$util.base64Encode($event)",
"PartitionKey": "$input.params('partition-key')"
}
这是aws论坛上的一个类似问题,用于通过api网关https://forums.aws.amazon.com/thread.jspa?threadID=233060将数据发送到kinesis
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句