Серверная временная метка с AWS DynamoDB V2 при использовании IoT Core Action? - PullRequest
1 голос
/ 26 марта 2020

В настоящее время я использую действие IoT Core для хранения некоторых данных JSON в таблице DynamoDB. Все работает нормально, единственная проблема в том, что все хранится в одном столбце ( полезная нагрузка в моем случае). Я обнаружил, что при использовании действия DynamoDB V2 каждая пара ключ-значение моего ввода JSON будет храниться в отдельном столбце. Я также смог реализовать это.

Но теперь у меня проблема в том, что я больше не могу создавать столбец меток времени, который может быть определен при использовании DynamoDB V1. Там я мог бы просто сказать, что мой вторичный ключ - это временная метка, и с помощью функции timestamp() она будет автоматически создавать временную метку на стороне сервера для каждого входа. Поскольку при использовании Версии 2 такой опции не существует, мне было интересно, есть ли способ добавить столбец с меткой времени для ввода, который проходит через шлюз IoT Core MQTT?

Я думаю, что мог бы go лямбда-путь и запуск функции, которая записывает каждый вход в V2 в DynamoDB, но я стараюсь избегать этого, потому что через меня будет поступать огромное количество данных.

Если у вас есть какие-либо мысли или идеи, я было бы приятно услышать их.

Приветствия,

1 Ответ

1 голос
/ 29 марта 2020

Это уже можно сделать с помощью действия DynamoDB V2 с помощью условия SELECT правила IoT.

Ключи, которые он использует при записи в DynamoDB, могут поступать из полезной нагрузки и / или SELECT пункт правила IoT. Таким образом, функция timestamp() может использоваться для автоматического создания отметки времени на стороне сервера.

например, установить правило, например:

SELECT *, timestamp() AS Timestamp FROM 'mytopic/#'

Действие DynamoDB V2 записывает в таблицу с первичный ключ:

Primary partition key    Id (String)
Primary sort key         Timestamp (Number)

В этом примере поле Id берется из полезной нагрузки и является ключом раздела. Функция timestamp() - это временная метка на стороне сервера, которая является ключом сортировки.

Итак, публикация в topi c с такой полезной нагрузкой:

{
  "message": "Hello from AWS IoT console",
  "value": "101",
  "Id": "2"
}

Создание элементов с использованием Id в полезной нагрузке и Timestamp из функции timestamp().

enter image description here

...