%20%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0.png)
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 호출 수가 줄어들지는 않습니다.