Я использую AWS API Gateway в качестве спокойной конечной точки API, где я затем передаю записи в поток Kinesis, а затем в Lambda.Однако, похоже, некоторые данные не доходят до лямбда-функции.
Я искал повсюду пример или что-то похожее на то, что я ищу, но мне не повезло.
Сообщение устройства будет выглядеть примерно следующим образом, и может быть несколько сообщений, поэтому оно находится в массиве.
[{
"deviceId": "00000000001",
"deviceType": "device",
"receivedTs": 1539234374000,
"readingList": [{
"channelId": 13,
"type": "temperature",
"value": 25.3,
"unit": "°C"
},{
"channelId": 12,
"type": "humidity",
"value": 3.65,
"unit": "V",
"label": "primary-battery"
}]
}]
Шаблон исходящего сопоставления, который у меня есть на данный момент, находится ниже:
{
"StreamName": "my-stream",
"Records": [
#foreach($elem in $input.path('$'))
#set($event = "{
""deviceId"": $elem.deviceId
""deviceType"": $elem.deviceType,
""receivedTs"": $elem.receivedTs,
""readingList"": [
#foreach($reading in $elem.readingList)
{
""channelId"": $reading.channelId,
""type"": ""$reading.type"",
""value"": $reading.value,
""unit"": ""$reading.unit"",
""label"": ""$reading.label""
}]
#if($foreach.hasNext),#end
#end
}")
{
"Data": "$util.base64Encode($event)",
"PartitionKey": "$elem.deviceType"
}#if($foreach.hasNext),#end
#end
]
}
Ниже показано, что мои журналы CloudWatch показывают из обработки в лямбда-функции.Некоторые данные отображаются, но массив объектов readList не заполняется правильно, он просто отображается как пустой.У меня есть ощущение, что это как-то связано с циклом foreach в шаблоне отображения, но я не могу понять, что.
Beginning to process all 1 records...
Event Name: aws:kinesis:record
Getting record contents.
Record contents: {
"deviceId": "00000000001",
"deviceType": "device",
"receivedTs": "1539234374000",
"readingList": [{
"channelId": "",
"type": "",
"value": "",
"unit": "",
"label": ""
}]
}
В лямбда-функции нет ничего особенного.Для тестирования он просто записывает содержимое сообщения на консоль, используя пример кода, предоставленный AWS.
Если у кого-то есть какие-либо идеи или полезные ссылки, это будет очень полезно.Спасибо за ваше время.