ShardId внутри лямбда-функции, обрабатывающей поток DynamoDb - PullRequest
0 голосов
/ 01 июня 2019

У меня есть функция Lambda, которая обрабатывает поток DynamoDb для создания агрегата в реальном времени (разветвления).Для каждой записи в пакете, доставляемом в функцию Lambda, агрегат обновляется.

Если в записи происходит сбой функции Lambda, происходит сбой и повторная попытка всего пакета (см. Обрабатывает ли AWS Lambda поток DynamoDBсобытия строго по порядку? ).Когда пакет повторяется, это может привести к обработке уже успешно обработанных записей.Поскольку агрегатное обновление не идемпотентно, агрегат становится некорректным.

Чтобы сделать агрегатное обновление идемпотентным, я бы хотел сохранить последнюю обработанную запись SequenceNumber в агрегате.При повторной попытке пакета элементы с более ранними номерами последовательностей могут быть отброшены (т. Е. Те, которые уже были добавлены в агрегат / обработаны).

Однако, поскольку номера последовательностей относятся к каждому шарду, использование их втаким образом, не зная ShardId.Это предположение верно?

Возможно получить ShardId при использовании клиентской библиотеки Kinesis.Можно ли получить ShardId изнутри лямбда-функции?

...