O AWS suporta a exclusão em massa de até 1.000 objetos por solicitação usando a API REST do S3 e seus vários wrappers. Este método pressupõe que você conheça as chaves de objeto do S3 que deseja remover (ou seja, ele não foi projetado para manipular algo como uma diretiva de retenção, arquivos acima de um determinado tamanho etc.).
A API REST do S3 pode especificar até 1000 arquivos a serem excluídos em uma única solicitação, o que deve ser mais rápido do que fazer solicitações individuais. Lembre-se, cada solicitação é uma solicitação HTTP (assim, TCP). Portanto, cada solicitação carrega a sobrecarga. Você só precisa conhecer as chaves dos objetos e criar uma solicitação HTTP (ou usar um wrapper no idioma de sua escolha). A AWS fornece ótimas informações sobre esse recurso e seu uso . Basta escolher o método com o qual você se sente mais confortável!
Estou assumindo que seu caso de uso envolve usuários finais especificando um número de arquivos específicos para excluir de uma só vez. Em vez de iniciar uma tarefa como "limpar todos os objetos que se referem a arquivos de imagens" ou "limpar todos os arquivos com mais de uma determinada data" (que, acredito, é fácil de configurar separadamente no S3).
Em caso afirmativo, você saberá as chaves que você precisa excluir. Isso também significa que o usuário vai gostar de mais comentários em tempo real sobre se o arquivo foi excluído com sucesso ou não. Referências a chaves exatas devem ser muito rápidas, uma vez que o S3 foi projetado para escalar de forma eficiente, apesar de lidar com uma quantidade extremamente grande de dados.
Se não, você pode procurar em chamadas de API assíncronas. Você pode ler um pouco sobre como eles funcionariam em geral a partir desta postagem no blog ou pesquise como fazer isso no idioma de sua escolha. Isso permitiria que a solicitação de exclusão ocupasse seu próprio encadeamento e o restante do código pudesse ser executado sem que um usuário esperasse. Ou você pode transferir a solicitação para uma fila. . . Mas essas duas opções desnecessariamente complicam seu código (o código assíncrono pode ser chato) ou seu ambiente (você precisaria de um serviço / daemon / container / servidor para lidar com a fila. Então, eu evitaria esse cenário, se possível.
Edit: Eu não tenho a reputação de postar mais de 2 links. Mas você pode ver os comentários da Amazon sobre a taxa de solicitações e o desempenho aqui: link E o s3 faq comenta que a maioria dele é o caminho a seguir, se possível.