json Kinesis到Lambda -解析数据

t30tvxxf  于 2023-05-02  发布在  其他
关注(0)|答案(1)|浏览(142)

我正在按照本教程将数据从API网关推送到Kinesis流:
www.example. com
我有我的身体贴图模板设置为。....

{
    "StreamName": "my-stream-name",
    "Data": "$util.base64Encode($input.path('$.Data'))",
    "PartitionKey": "$input.path('$.PartitionKey')"
}

...并将以下内容放入API测试的请求体中。..

{
  "Data": {
    "Foo": "A",
    "Bar": "B"
  },
  "PartitionKey": "some key"
}

然后我创建了一个Lambda函数,它有一个针对相同Kinesis Stream设置的触发器。然而,我正在努力解码/反序列化来自Kinesis的记录。

exports.handler = (event, context, callback) => {    
    event.Records.forEach(function(record) {        
        let payload = JSON.parse(Buffer(record.kinesis.data, 'base64').toString('ascii'))      
    });
};

数据似乎正在以非JSON格式序列化到Kinesis。forEach循环中record.kinesis.data的值为
e0Zvbz1BLCBCYXI9Qn0=
... which when push through Buffer( www.example.com ,'base64')。toString('ascii ')
返回为
{Foo=A,条=B}

{“Foo”:“A”,“Bar”:“B”}
主要目的显然是让有效载荷处于一种状态,在这种状态下,我可以说console.log(payload.Foo)
任何提示,我应该做什么/寻找将不胜感激。

mmvthczy

mmvthczy1#

对其他人来说
我有我的身体贴图模板设置为。....

{
    "StreamName": "my-stream-name",
    "Data": "$util.base64Encode($input.path('$.Data'))",
    "PartitionKey": "$input.path('$.PartitionKey')"
}

现在改为处理JSON。...

{
    "StreamName": "my-stream-name",
    "Data": "$util.base64Encode($input.json('$.Data'))",
    "PartitionKey": "$input.path('$.PartitionKey')"
}

在哪里

($input.json('$.Data'))

是变化:)

相关问题