Создание индекса объектов S3 может быть очень полезным для быстрого поиска по ним: естественный, наиболее очевидный способ - хранить дополнительные данные в метаданных объекта и использовать лямбду для записи в DynamoDB или RDS, как описано здесь. : https://aws.amazon.com/blogs/big-data/building-and-maintaining-an-amazon-s3-metadata-index-without-servers/
Однако эта стратегия ограничена количеством данных, которое можно сохранить в метаданных объекта, которое составляет 2 КБ, как описано здесь: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html. Предположим, вам нужно построить систему, в которой каждый раз при загрузке объекта на S3 вы должны добавить в базу данных некоторую информацию, не содержащуюся в файле и имени объекта, и эти данные превышают 2 КБ: вы не можете сохранить ее в метаданных объекта.
Каковы жизнеспособные стратегии для обновления корзины и индекса?
Реализовать два связанных API-вызова, где каждый вызов идемпотентен: если второй сбой при первом успешном, можно повторить попытку до успешного завершения. Что произойдет, если вы выполняете PUT идентичного объекта на S3 и у вас активировано управление версиями? Будет ли S3 увеличивать версию? В этом случае реализация идемпотентности требует, чтобы в каждый момент времени был активен один писатель
Используйте какой-либо механизм рабочего процесса для отслеживания этого двухэтапного поведения, например, AWS Step. Что за ошибки в этом решении?