특정 날짜에 대해 s3 버킷에서 모든 파일(또는 파일 이름) 가져오기

특정 날짜에 대해 s3 버킷에서 모든 파일(또는 파일 이름) 가져오기

s3 버킷에서 어제의 모든 파일을 가져와야 합니다. 파일 이름을 알고 있으면 CLI에서 이 작업을 수행하는 방법을 알고 있습니다. #aws s3 cp s3:{Path}/{FileName} {diretoryToCopyTo}

하지만 특정 날짜의 파일에 대해서는 어떻게 해야 합니까? 특정 날짜에 대한 파일 이름 목록을 얻는 것만으로도 어떤 방법을 사용하든 CLI가 필요하지 않습니다.

캐치:버킷에는 수백만 개의 파일이 있으므로 비용 효율적인 방법도 찾고 있습니다.

답변1

파일 이름에 날짜가 포함되어 있으면 다음을 사용할 수 있습니다.포함 및 제외 필터: aws s3 cp s3:{path}/ {directoryToCopyTo} --exclude "*" --include "*2019-09-09*"

날짜가 파일 메타데이터에만 있는 경우 현재 날짜별로 서버 측 필터링 방법이 없습니다. github 토론이 있습니다.윌스트루빙다음을 사용하는 방법이 있습니다 s3api.

s3api여기에 및 함수를 사용하여 이를 수행하는 방법이 있습니다 --query. 이는 OSX에서 테스트되었습니다. aws s3api list-objects --bucket "bucket-name" --query 'Contents[?LastModified>=2016-05-20][].{Key: Key}'그런 다음 jq 또는 grep을 사용하여 필터링하여 다른 s3api 기능으로 처리할 수 있습니다. 편집: 왜 표시되지 않는지 잘 모르겠지만 쿼리하는 날짜를 둘러싸려면 백틱을 사용해야 합니다.

...하지만 필터링이 클라이언트 측에서 수행되므로 API 호출 수가 줄어들지는 않습니다.

관련 정보