#php #amazon-web-services #amazon-s3
#php #amazon-веб-сервисы #amazon-s3
Вопрос:
Следующий код возвращает все объекты в моей корзине S3:
$iterator = $s3Client->getIterator('ListObjects', array(
'Bucket' => $bucket
));
Возможно ли возвращать только те файлы, которые были изменены (или загружены) с момента «X»? Прямо сейчас он возвращает все файлы, и я должен просмотреть каждый из них и проверить, был ли он изменен с момента «X», это добавляет значительное количество времени и является более дорогостоящим подходом.
Ответ №1:
Для этого нет встроенного механизма. Однако, в зависимости от характера ваших требований, вы также можете рассмотреть:
- Использование S3 Inventory для получения списка объектов, подготовленных AWS для вас в
csv
формате. И используйте этот список, чтобы получить последние объекты. Это не в реальном времени, так как инвентаризация создается один раз в день или неделю. - Храните метаданные ваших объектов, например, в DynamoDB. Любой новый объект в вашей корзине будет иметь свои метаданные (например, время создания), сохраненные в DynamoDB. Это позволит вам эффективно получать и запрашивать объекты, которые вы хотите использовать позже.
Могут быть и другие возможности, например, использование двух сегментов с комбинацией replication
и lifecycles
, чтобы иметь один сегмент только с текущими объектами, а другой — со всеми. Существует также возможность использования --start-after
, если вы будете называть свои объекты в алфавитном порядке на основе временных меток. Однако два решения, упомянутые выше, кажутся наиболее распространенными.