AWS mendukung penghapusan massal hingga 1000 objek per permintaan menggunakan API S3 REST dan berbagai pembungkusnya. Metode ini mengasumsikan Anda tahu kunci objek S3 yang ingin Anda hapus (yaitu, itu tidak dirancang untuk menangani sesuatu seperti kebijakan penyimpanan, file yang melebihi ukuran tertentu, dll).
S3 REST API dapat menentukan hingga 1000 file yang akan dihapus dalam satu permintaan, yang mana harus lebih cepat daripada membuat permintaan individual. Ingat, setiap permintaan adalah permintaan HTTP (dengan demikian TCP). Jadi setiap permintaan memiliki overhead. Anda hanya perlu mengetahui kunci objek dan membuat permintaan HTTP (atau menggunakan pembungkus dalam bahasa pilihan Anda). AWS memberikan informasi hebat tentang fitur ini dan penggunaannya . Pilih saja metode yang paling nyaman bagi Anda!
Saya berasumsi kasus penggunaan Anda melibatkan pengguna akhir yang menentukan sejumlah file tertentu untuk dihapus sekaligus. Daripada memulai tugas seperti "membersihkan semua objek yang merujuk ke file gambar" atau "bersihkan semua file yang lebih tua dari tanggal tertentu" (yang saya percaya mudah untuk dikonfigurasikan secara terpisah dalam S3).
Jika demikian, Anda akan tahu kunci yang perlu Anda hapus. Ini juga berarti pengguna akan lebih suka umpan balik waktu nyata tentang apakah file mereka berhasil dihapus atau tidak. Referensi ke kunci yang tepat seharusnya sangat cepat, karena S3 dirancang untuk mengukur secara efisien meskipun menangani sejumlah besar data.
Jika tidak, Anda dapat melihat panggilan API asinkron. Anda dapat membaca sedikit tentang cara kerjanya secara umum dari posting blog ini atau mencari cara melakukannya dalam bahasa pilihan Anda. Ini akan memungkinkan permintaan penghapusan untuk mengambil utasnya sendiri, dan sisa kode dapat dijalankan tanpa membuat pengguna menunggu. Atau, Anda dapat menurunkan permintaan ke antrian. . . Tetapi kedua opsi ini tidak perlu mempersulit kode Anda (kode asinkron bisa mengganggu) atau lingkungan Anda (Anda memerlukan layanan / daemon / container / server untuk menangani antrian. Jadi saya akan menghindari skenario ini jika memungkinkan.
Sunting: Saya tidak memiliki reputasi untuk mengirim lebih dari 2 tautan. Tetapi Anda dapat melihat komentar Amazon pada tingkat permintaan dan kinerja di sini: http://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html Dan komentar faq s3 bahwa deleiton massal adalah cara untuk pergi jika mungkin.
aws s3api list-objects --output text --bucket BUCKET --query 'Contents[].[Key]' | pv -l > BUCKET.keys
Dan kemudian menghapus objek (ini cukup bahwa melewati 1 proses paralel mencapai batas laju untuk penghapusan objek):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"' _