Я думаю, что это может быть случаем несоответствия ожиданий относительно того, какие функции предоставляет S3.
S3 на самом деле не имеет никакой структуры, ведро просто имеет плоский набор объектов с полной строкой, которую можно рассматривать как «путь», являющийся ключом каждого объекта.
Действие API ListObjectsV2 однако предоставляет такие функции, как указание префикса (возвращает только объекты, имеющие ключ, начинающийся с определенной строки) и возможность указания разделителя (разделяет ключи по указанному разделителю и группирует повторяющиеся сегменты ключа), которые позволяют представить содержимое ведро, как если бы оно имело структуру (например, как это делает консоль AWS).
авс s3 синхронизация
утилита предположительно тоже начинает работать с нормального Действие API ListObjectsV2, но этот API не имеет функций, эквивалентных --исключать
(или же --включать
) в утилите синхронизации, только возможность получить список, отфильтрованный по префиксу ключа.
Следовательно, может показаться, что утилита синхронизации должна выполнять обработку этих более гибких параметров фильтрации на стороне клиента, поскольку она обрабатывает полный список объектов для указанного префикса, что никогда не будет действительно эффективным, если имеется большое количество объектов. под указанным префиксом, которые должны быть пропущены.
То, что вы хотите сделать в своем сценарии, вероятно, заключается в том, чтобы вместо этого указать префикс или префиксы, которые вы хотите, вместо указания более общего префикса и фильтрации того, что вам не нужно. Если то, что вы хотите, не идентифицируется по префиксу, вы можете рассмотреть возможность изменения своего имени, чтобы был какой-то известный префикс, который вы можете указать. (Или, возможно, даже использовать отдельные корзины для разных типов данных, если это больше подходит для вашей ситуации.)