A3 S3 REST API और इसके विभिन्न रैपर का उपयोग करके प्रति अनुरोध 1000 वस्तुओं तक के थोक विलोपन का समर्थन करता है। यह विधि मानती है कि आप उस S3 ऑब्जेक्ट कुंजियों को जानते हैं, जिसे आप निकालना चाहते हैं (अर्थात, इसे किसी अवधारण नीति, कुछ निश्चित आकार से अधिक फ़ाइलें, आदि) को संभालने के लिए डिज़ाइन नहीं किया गया है।
S3 REST API एकल अनुरोध में हटाई जाने वाली 1000 फ़ाइलों को निर्दिष्ट कर सकती है, जो कि व्यक्तिगत अनुरोध करने की तुलना में तेज होनी चाहिए। याद रखें, प्रत्येक अनुरोध एक HTTP (इस प्रकार टीसीपी) अनुरोध है। इसलिए प्रत्येक अनुरोध ओवरहेड वहन करता है। आपको बस वस्तुओं की कुंजी जानने और एक HTTP अनुरोध बनाने (या अपनी पसंद की भाषा में एक आवरण का उपयोग करने) की आवश्यकता है। AWS इस सुविधा और इसके उपयोग पर बहुत अच्छी जानकारी प्रदान करता है । बस वह विधि चुनें जिसके साथ आप सबसे अधिक सहज हों!
मैं मान रहा हूं कि आपके उपयोग के मामले में अंतिम उपयोगकर्ता एक बार में हटाने के लिए कई विशिष्ट फ़ाइलों को निर्दिष्ट कर रहे हैं। किसी कार्य को शुरू करने के बजाय जैसे "सभी ऑब्जेक्ट्स जो चित्र फ़ाइलों को संदर्भित करता है" या "एक निश्चित तिथि से अधिक पुरानी सभी फ़ाइलों को शुद्ध करें" (जो मेरा मानना है कि S3 में अलग से कॉन्फ़िगर करना आसान है)।
यदि हां, तो आपको उन कुंजियों का पता चल जाएगा जिन्हें आपको हटाने की आवश्यकता है। इसका मतलब यह भी है कि उपयोगकर्ता इस बारे में अधिक वास्तविक समय प्रतिक्रिया पसंद करेंगे कि उनकी फ़ाइल सफलतापूर्वक हटा दी गई थी या नहीं। सटीक कुंजी का संदर्भ बहुत जल्दी माना जाता है, क्योंकि S3 को बहुत बड़ी मात्रा में डेटा को संभालने के बावजूद कुशलता से स्केल करने के लिए डिज़ाइन किया गया था।
यदि नहीं, तो आप एसिंक्रोनस एपीआई कॉल में देख सकते हैं। आप इस बारे में थोड़ा पढ़ सकते हैं कि वे इस ब्लॉग पोस्ट से सामान्य रूप से कैसे काम करेंगे या अपनी पसंद की भाषा में कैसे करें। यह विलोपन अनुरोध को अपना स्वयं का धागा लेने की अनुमति देगा, और बाकी कोड उपयोगकर्ता को प्रतीक्षा किए बिना निष्पादित कर सकता है। या, आप अनुरोध को एक कतार में लोड कर सकते हैं। । । लेकिन इन दोनों विकल्पों में अनावश्यक रूप से या तो आपके कोड (अतुल्यकालिक कोड कष्टप्रद हो सकते हैं) या आपके वातावरण को जटिल बनाते हैं (कतार को संभालने के लिए आपको सेवा / डेमॉन / कंटेनर / सर्वर की आवश्यकता होगी। इसलिए यदि संभव हो तो मैं इस परिदृश्य से बचूंगा।
संपादित करें: मेरे पास 2 से अधिक लिंक पोस्ट करने की प्रतिष्ठा नहीं है। लेकिन आप अनुरोध दर और प्रदर्शन पर अमेज़ॅन की टिप्पणियों को यहां देख सकते हैं: http://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html और s3 faq टिप्पणियाँ: थोक 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"' _