映射模板新手。
使用此查询字符串作为输入:
用户id = foo& firstname = bar&蝙蝠lastname =
我需要POST数据到Kinesis作为JSON,因此:
{
"userid":"foo",
"firstname":"bar",
"lastname":"bat"
}
然而,根据消费Lambda,它到达Kinesis时被转换成逗号分隔的键=值对,因此:
userid=foo, firstname=bar, lastname=bat
Google发现一些旧的论坛帖子概述了同样的问题,但没有解决方案。
这是我使用的映射模板:
{
#set($data = {
"userid":"$input.params('userid')",
"firstname":"$input.params('firstname')",
"lastname":"$input.params('lastname')"
})
"StreamName": "xyz",
"Data": "$util.base64Encode($data)",
"PartitionKey": "0"
}
似乎映射模板正在将$data字典转换为逗号分隔的键=值对列表。也许我应该构造一个JSON字符串而不是一个字典,但是,我认为这种行为必须是可配置的。如何指示系统构造JSON而不是KV?
这不是我想要的,但是,我可以通过构造字符串而不是字典来防止转换为KV,如下所示:
{
#set($data = "{
""userid"":""$input.params('userid')"",
""firstname"":""$input.params('firstname')"",
""lastname"":""$input.params('lastname')""
}")
"StreamName": "xyz",
"Data": "$util.base64Encode($data)",
"PartitionKey": "0"
}
我要把它留在这里,因为我确实不得不与它搏斗了一会儿。希望将来Google派人来的时候能帮上忙。