Наиболее прямым подходом было бы добавить ReturnValues: 'UPDATED_NEW'
к параметрам, которые вы используете для вас updateItem()
вызов.
Затем вы можете сказать, вставлен ли новый элемент, потому что возвращенный Attributes
будет включать ваш раздел (и сортировать, если вы использовали составной) ключ.
Это потому, что вы не можете изменить ключ элемента, так что если все, что вы сделали, это обновить элемент, то выне обновил бы свой ключ.Но если у вас создан новый элемент, вы бы «обновили» его ключ.
Однако, если вы хотите реагировать на элементы, обновляемые в динамической таблице, вы могли бы альтернативноиспользовать потоки DynamoDB (документы) .
Эти потоки позволяют запускать лямбда-выражения для транзакций в таблице динамо.Эта лямбда может затем фильтровать события для обновлений и реагировать соответственно.Преимущество этого архитектурного подхода заключается в том, что ваша функциональность onUpdate сработает, если что-нибудь обновит таблицу, а не только конкретную лямбду.