簡體   English   中英

Kinesis到Lambda - 解析數據

[英]Kinesis to Lambda - Parsing Data

我正在按照本教程將數據從我的API網關推送到Kinesis流:

http://docs.aws.amazon.com/apigateway/latest/developerguide/integrating-api-with-aws-services-kinesis.html#api-gateway-get-and-add-records-to-stream

我將我的身體映射模板設置為......

{
    "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 =

...當推送緩沖區時(record.kinesis.data,'base64')。toString('ascii')

返回為

{Foo = A,Bar = B}

{“Foo”:“A”,“Bar”:“B”}

主要目的顯然是將有效負載置於我可以說console.log(payload.Foo)

任何關於我應該做什么/尋找什么的提示都將不勝感激。

對於那里的任何人

我將我的身體映射模板設置為......

{
    "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'))

是改變:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM