Секвенсор , найденный в event.Records[0].s3.object.sequencer
, предназначен только для устранения неоднозначности порядка событий для одного ключа объекта в одном сегменте.
Он позволяет определить порядок событий, влияющих наодин объект, например, несколько перезаписей одного объекта или создание нескольких версий одного объекта.
Применительно к событиям для разных блоков или объектов внутри блока значение секвенсора не должно считаться полезным для упорядочивания сравнений.
Вместо этого используйте event.Records[0].eventTime
для сравнения порядка событий, влияющих на разные объекты.
Фактически, вы часто можете просто использовать это значение, даже для одного объекта, если события не близки по времени.
https://docs.aws.amazon.com/AmazonS3/latest/dev/notification-content-structure.html
Обратите внимание, что при сравнении значений секвенсора для одного объекта вы должны сначала определить максимальную длину самого длинного значения секвенсора, а слева добавить все остальные к той же длине с помощью0
и затем сравнивать их лексически, как строки, а не числа (это шестнадцатеричные строки) ... так что яЕсли у вас есть значения секвенсора 21
и 1f38
, то вам нужно дополнить значения 21
до 0021
, и в этот момент он будет правильно определен как менее чем 1f37
.Это примеры, реальные секвенсоры намного длиннее.Не ожидайте, что секвенсоры будут монотонными - только то, что более поздние значения всегда больше, чем более ранние значения, для одного объекта.