2016-08-14 3 views
0

수백만 개의 파일이있는 S3 버킷이 있습니다. CloudTrail (CloudTrail 로그)에 의해 생성 된 파일입니다. 특정 날짜에 업로드 된 파일 만 다운로드하는 Python 스크립트를 작성하고 싶습니다. 이미 다운로드 코드가 작동 중입니다. 문제는 아닙니다. 문제는 특정 날짜에 생성/업로드 된 파일의 하위 집합 만 다운로드하는 방법입니다.특정 날짜에 업로드 된 S3 버킷의 모든 파일을 어떻게 다운로드합니까?

이것은 매우 직설적 인 사용 사례처럼 보입니다. S3 API가 이것을 지원하지 않는다는 사실에 놀랐습니다.

+0

AWS CLI for CLI는 파일 하위 집합 – helloV

답변

1

S3 개체의 '마지막으로 수정 한 날짜'속성을 사용하여 특정 날짜를 기준으로 필터링 할 수 있습니다. 다음은 Java API를 사용하는 예입니다.

ObjectListing listing = s3Client.listObjects('my_bucket_name'); 
List<S3ObjectSummary> objectSummaries = listing.getObjectSummaries(); 

for(S3ObjectSummary s3ObjectSummary: objectSummaries) { 
    if(s3ObjectSummary.getLastModified().equals(today) { 
    //download this file 
    s3Client.getObject('my_bucket_name', s3ObjectSummary.getKey()); 
    } 
} 
+0

을 다운로드 할 수 있습니다. 네, 저는 같은 생각을하고있었습니다 만, S3의 모든 객체를 나열 할 것입니다. 버킷에는 많은 수의 파일이 포함될 수 있습니다 (적어도 수십만 개 정도). 이게 어떻게 공연 할까? – rhcw

+0

'listObjects()'API 호출 당 최대 1,000 개의 객체 만 나열 할 수 있습니다 (모든 객체를 가져 오기 위해 위의 루프를 수행해야합니다). 그렇습니다. 성능에 문제가 있습니다. 유사한 문제 (및 몇 가지 해결 방법 - 키 접두사를 사용하는 해결 방법이 좋습니다)를 설명하는이 스레드를 확인할 수 있습니다 : https://github.com/aws/aws-cli/issues/1104. – Dasharath

+0

입력 해 주셔서 감사합니다! 고맙습니다. – rhcw

관련 문제