2

플랫 Amazon S3 버킷에 200,000 개의 이미지가 있다고 가정합니다.일치하는 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

아마존은 직접 S3 API를 사용하여이 작업을 수행 할 수있는 방법을 제공합니다. 단지 접두사로 시작하는 개체를 반환으로 나열 S3 객체를 호출 할 때

당신은 prefix 옵션을 사용할 수 있습니다. 예를 들면 PHP의 AWS SDK를 사용하여 : 또한 delimiter 옵션이 유용을 찾을 수 있습니다

// 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)) 

- 당신은 모든 고유의 6 자리 해시의 목록을 얻으려면 그것을 사용할 수 있습니다.