AWS는 S3 REST API 및 다양한 래퍼를 사용하여 요청 당 최대 1000 개의 객체를 대량으로 삭제할 수 있습니다. 이 방법에서는 제거하려는 S3 객체 키를 알고 있다고 가정합니다 (즉, 보존 정책, 특정 크기를 초과하는 파일 등을 처리하도록 설계되지 않음).
S3 REST API는 단일 요청에서 최대 1000 개의 파일을 삭제하도록 지정할 수 있으며 개별 요청보다 빠릅니다. 각 요청은 HTTP (따라서 TCP) 요청입니다. 따라서 각 요청에는 오버 헤드가 발생합니다. 객체의 키를 알고 HTTP 요청을 작성하거나 원하는 언어로 래퍼를 사용하면됩니다. AWS는이 기능과 사용법에 대한 훌륭한 정보를 제공합니다 . 가장 편한 방법을 선택하십시오!
유스 케이스에는 최종 사용자가 한 번에 삭제할 특정 파일을 여러 개 지정하는 것이 포함되어 있다고 가정합니다. "그림 파일을 참조하는 모든 개체를 제거하십시오"또는 "특정 날짜보다 오래된 모든 파일을 제거하십시오"(S3에서 별도로 구성하기 쉽다고 생각 함)와 같은 작업을 시작하기보다는.
그렇다면 삭제해야 할 키를 알게됩니다. 또한 사용자가 파일이 성공적으로 삭제되었는지 여부에 대한 실시간 피드백을 원한다는 것을 의미합니다. S3는 매우 많은 양의 데이터를 처리하더라도 효율적으로 확장되도록 설계되었으므로 정확한 키에 대한 참조는 매우 빠릅니다.
그렇지 않은 경우 비동기 API 호출을 조사 할 수 있습니다. 이 블로그 게시물 에서 일반적인 작동 방식에 대한 내용을 읽 거나 원하는 언어로 수행하는 방법을 검색 할 수 있습니다. 이를 통해 삭제 요청이 자체 스레드를 차지하고 나머지 코드는 사용자를 기다리지 않고 실행할 수 있습니다. 또는 요청을 대기열로 오프로드 할 수 있습니다. . . 그러나이 두 옵션 모두 코드 (비동기 코드가 성 가실 수 있음) 또는 환경 (대기열을 처리하기 위해 서비스 / 데몬 / 컨테이너 / 서버가 필요합니다)을 불필요하게 복잡하게 만듭니다. 가능한 경우이 시나리오를 피할 것입니다.
편집 : 2 개 이상의 링크를 게시 할 평판이 없습니다. 하지만 여기에 요청 속도와 성능에 아마존의 의견을 볼 수 http://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html 그리고 S3 자주 묻는 질문 코멘트가 대량 deleiton가 있다는 가능하다면 갈 길.
aws s3api list-objects --output text --bucket BUCKET --query 'Contents[].[Key]' | pv -l > BUCKET.keys
그리고 객체를 제거합니다 (1 개의 병렬 프로세스를 넘어tail -n+0 BUCKET.keys | pv -l | grep -v -e "'" | tr '\n' '\0' | xargs -0 -P1 -n1000 bash -c 'aws s3api delete-objects --bucket BUCKET --delete "Objects=[$(printf "{Key=%q}," "$@")],Quiet=true"' _