Возвращает только те объекты, которые соответствуют требованиям времени AWS S3

#php #amazon-web-services #amazon-s3

#php #amazon-веб-сервисы #amazon-s3

Вопрос:

Следующий код возвращает все объекты в моей корзине S3:

 $iterator = $s3Client->getIterator('ListObjects', array(
    'Bucket' => $bucket
));
 

Возможно ли возвращать только те файлы, которые были изменены (или загружены) с момента «X»? Прямо сейчас он возвращает все файлы, и я должен просмотреть каждый из них и проверить, был ли он изменен с момента «X», это добавляет значительное количество времени и является более дорогостоящим подходом.

Ответ №1:

Для этого нет встроенного механизма. Однако, в зависимости от характера ваших требований, вы также можете рассмотреть:

  1. Использование S3 Inventory для получения списка объектов, подготовленных AWS для вас в csv формате. И используйте этот список, чтобы получить последние объекты. Это не в реальном времени, так как инвентаризация создается один раз в день или неделю.
  2. Храните метаданные ваших объектов, например, в DynamoDB. Любой новый объект в вашей корзине будет иметь свои метаданные (например, время создания), сохраненные в DynamoDB. Это позволит вам эффективно получать и запрашивать объекты, которые вы хотите использовать позже.

Могут быть и другие возможности, например, использование двух сегментов с комбинацией replication и lifecycles , чтобы иметь один сегмент только с текущими объектами, а другой — со всеми. Существует также возможность использования --start-after , если вы будете называть свои объекты в алфавитном порядке на основе временных меток. Однако два решения, упомянутые выше, кажутся наиболее распространенными.