2

Предположим 200 000 изображений в плоском ковре Amazon S3.Как я могу эффективно получить список подходящих файлов Amazon S3?

Ковш выглядит примерно так:

000000-1.jpg 
000000-2.jpg 
000000-3.jpg 
000000-4.jpg 
000001-1.jpg 
000001-2.jpg 
000002-1.jpg 
... 
ZZZZZZ-9.jpg 
ZZZZZZ-10.jpg 

(6 цифр хэш с последующим отсчетом, с последующим расширением)

Если мне нужны все файлы, соответствующие 000001-*.jpg, что является самым эффективным способом получить это?

В PHP я бы использовал rglob($path,'{000001-*.jpg}',GLOB_BRACE), чтобы получить массив совпадений, но я не думаю, что это работает удаленно.

Я могу получить список всех файлов в ковше, а затем найти совпадения в массиве, но это похоже на дорогостоящий запрос.

Что вы рекомендуете?

ответ

8

Amazon предоставляет способ сделать это напрямую, используя S3 api.

Вы можете использовать опцию prefix при вызове перечисления объектов S3 только для возврата объектов, начинающихся с префикса. например, с помощью AWS SDK для PHP:

// Instantiate the class 
$s3 = new AmazonS3(); 

$response = $s3->list_objects('my-bucket', array(
    'prefix' => '000001-' 
)); 

// Success? 
var_dump($response->isOK()); 
var_dump(count($response->body->Contents)) 

Вы также можете найти delimiter вариант полезен - вы можете использовать, чтобы получить список всех уникальных 6 цифр хэшей.

Смежные вопросы