#amazon-web-services #amazon-dynamodb #aws-iot
#amazon-веб-сервисы #amazon-dynamodb #aws-iot
Вопрос:
Я использую ядро AWS IoT с правилом DynamoDB для темы MQTT. Моя полезная нагрузка JSON выглядит примерно так:
{
"car_id": 52,
"timestamp": "2020-08-31 12:50:00",
"passengers": [
{
"passenger_id": 143,
"passenger_name": "Foo"
},
{
"passenger_id": 144,
"passenger_name": "Bar"
}
]
}
Я хотел бы, чтобы правило IoT вставляло несколько строк в таблицу DynamoDB из этой полезной нагрузки, которая выглядела бы так:
car_id timestamp passenger_id passenger_name
52 2020-08-31 12:50:00 143 Foo
52 2020-08-31 12:50:00 144 Bar
то есть, по сути, выполняется объединение между внешними данными ( car_id
, timestamp
) и внутренними строками ( passengers
) и вставка одной строки в базу данных для каждой passenger
.
Есть предложения о том, как это сделать с помощью SQL-правила IoT? Возможно ли это?
Примечание: Я рассматривал возможность разбиения этого на несколько сообщений MQTT (по одному для каждого passenger
), но это сопряжено с риском того, что некоторые сообщения будут вставлены успешно, а некоторые нет. Я не хочу вставлять какие-либо записи, если не могут быть вставлены все записи для car
.
РЕДАКТИРОВАТЬ: Связанный, но отдельный вопрос: возможно ли использовать шаблонные поля для таких вещей, как ${iot:Connection.Thing.ThingName}
поле, которое вы можете использовать для политик?
Комментарии:
1. Я не уверен, что вы можете вставить 2 строки, используя одно действие правила (возможно, вы можете), но также может быть проще использовать Lambda для достижения вашей цели. Рассматривали ли вы этот вариант?
2. У меня есть, но, основываясь на предварительных расчетах, добавление туда лямбды увеличило бы общую стоимость как минимум на 20%.
3. Это говорит о том, что у вас должно быть довольно много поступающих данных. Лямбда — это дешево! Если это просто выполнение вставок, вы, вероятно, могли бы выполнить все это в течение 100 мс и 128 МБ оперативной памяти. Даже если стоимость возрастает, возможно, это лучше, чем делать что-то нетрадиционное или менее явное, поскольку это не похоже на обычный вариант использования действия правила ядра IoT.