Происхождение секвенсора получения S3-события или SQS Reception - PullRequest
0 голосов
/ 21 марта 2019

Из документации по уведомлениям о событиях Amazon S3

В конфигурации уведомлений вы можете запросить у Amazon S3 публикацию событий в очереди SQS. В настоящее время стандартная очередь SQS разрешена только в качестве места назначения уведомлений о событиях Amazon S3, тогда как очередь FIFO SQS не допускается. Дополнительную информацию о SQS см. На странице сведений о продукте Amazon SQS.

Будет ли секвенсор в объектных событиях очереди событий SQS отражать порядок, в котором происходили операции S3, или порядок, в котором очередь SQS (не-fifo) получала события?

Ответы [ 2 ]

1 голос
/ 22 марта 2019

Секвенсор , найденный в 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.Это примеры, реальные секвенсоры намного длиннее.Не ожидайте, что секвенсоры будут монотонными - только то, что более поздние значения всегда больше, чем более ранние значения, для одного объекта.

1 голос
/ 21 марта 2019

Как указано в документации для стандартных очередей :

Стандартные очереди обеспечивают упорядочение с максимальным усилием, которое гарантирует, что сообщения обычно доставляются в том же порядке, в котором они были отправлены.

Таким образом, порядок событий не гарантирован, но будет приблизительно отражать порядок, в котором они отправляются с S3.

Редактировать: Вы можете использовать SentTimestamp в атрибутах сообщения , чтобы увидеть, когда сообщение было отправлено в очередь, и отсортировать по нему.

...