ابزاری برای حذف و تخلیه سریع سطل های S3 (پشتیبانی از نسخه)

- دکمه خالی کردن سطل S3 در کنسول S3 وجود دارد اما در CLI یا SDK وجود ندارد.
- هنگام حذف یک سطل S3، سطل باید خالی باشد تا حذف شود.
- می توان با آن انجام داد
aws s3 rb --force
در CLI، اما کند است.
- می توان با آن انجام داد
- میخوای خالیش کنی ولی من نمیتونم سطل رو حذف کنم + دوباره ایجاد کنم چون بستگی به منابع دیگه داره.
- شما باید یک روز صبر کنید تا سعی کنید آن را با عملکرد چرخه حیات S3 حذف کنید
- وقتی نسخهسازی روشن است، حذف مشکلساز است
من یک ابزار OSS برای حل این خارش منتشر کرده ام.
اکنون می توانید کل سطل ها را خالی یا حذف کنید خیلی راحت و سریع.
علاوه بر این، شما می توانید انجام دهید چندین سطل به طور همزمان (در حین جستجو)!
چیست
ابزار CLI برای خالی کردن (بنابراین تمام اشیاء و نسخه ها / حذف نشانگرها را حذف کنید در) سطل های آمازون S3 (AWS). خود سطل همچنین می تواند توسط گزینه حذف شود.
این ابزار به شما این امکان را می دهد جستجو برای نام سطل و حذف یا خالی کنید سطل های متعدد.
کد منبع
به زبان Go پیاده سازی شده است. لطفاً GitHub را ببینید.
امکانات
گزینه حذف سطل
در ابتدا، این ابزار برای “خالی کردن سطل” در نظر گرفته شده بود، اما از آنجایی که قرار بود مشکل را پشت سر بگذارم، یک گزینه نیز اضافه کردم (-f|--force
) به “سطل را نیز حذف کنید”.
نام سطل را جستجو کنید و چندین سطل را حذف کنید
همانطور که در زیر توضیح داده شد، می توانید نام سطل ها را جستجو کنید و چندین سطل را به طور همزمان حذف یا خالی کنید.
متقابل منطقه
در حذف چند سطل، میتوانید همه آنها را به یکباره حذف کنید، حتی اگر در چندین منطقه باشند.
نسخه سازی
حتی اگر نسخهسازی روشن باشد، می توانید آن را خالی کنید همانطور که گویی خاموش است. بنابراین، می توانید از آن استفاده کنید بدون آگاهی از تنظیمات نسخه سازی
تعداد اشیاء قابل حذف
Delete-objects API ارائه شده توسط CLI و SDK دارای محدودیت است “تعداد اشیاء قابل حذف در یک دستور به 1000 محدود است”، ولی این ابزار محدودیتی در تعداد ندارد.
پردازش موازی
هنگامی که بیش از 1000 نسخه شی وجود دارد، حذف شی در آن انجام می شود پردازش موازی.
همانطور که در بالا ذکر شد، حداکثر 1000 شی را می توان با استفاده از 1 API SDK حذف کرد، بنابراین هر واحد به صورت موازی اجرا می شود.
بنابراین، بسیار سریع است.
به عنوان آزمایش، من دو سطل با همان 10000 شی (اندازه بسیار کوچک) آماده کردم و سعی کردم به ترتیب با دکمه “Empty” روی کنسول و ابزاری که ایجاد کردم (محیط محلی / تعداد هسته CPU منطقی 8) آنها را حذف کنم. طول کشید 22 ثانیه روی کنسول و 8 ثانیه با این ابزار به این معنا که 3 برابر سریعتر نسبت به کنسول
همچنین، با 10 میلیون شی (شامل نشانگرهای نسخه و حذف)، حذف کامل شد حدود 100 دقیقه. (این بستگی به محیط عملیاتی دارد، بنابراین من نمی توانم هیچ تضمینی بدهم.)
روی خطای 503 دوباره امتحان کنید
هنگامی که ده ها هزار شی وجود دارد، در موارد نادری که با استفاده از CLI یا SDK همه آنها را به یکباره حذف می کنید، ممکن است یک خطای SlowDown (خطای 503) در سمت api S3 رخ دهد.
هنگامی که این اتفاق می افتد، cls3 با اضافه کردن مکانیزمی که چند ثانیه صبر می کند و چندین بار به طور خودکار دوباره تلاش می کند، پاسخ می دهد.
نصب
هومبرو
brew install go-to-k/tap/cls3
باینری ها
ساخت منبع (نسخه توسعه)
محیط Go مورد نیاز است.
git clone https://github.com/go-to-k/cls3.git
cd cls3
make install
نحوه استفاده
cls3 -b <bucketName> [-b <bucketName>] [-p <profile>] [-r <region>] [-f|--force] [-i|--interactive]
گزینه ها
- -b، –bucketName: اختیاری
- نام سطل
- باید در آن مشخص شود نه حالت تعاملی
- در غیر این صورت (پس در حالت تعاملی)، شما نمی تواند این را مشخص کنید!
- مشخصات چندگانه امکان پذیر است.
cls3 -b test1 -b test2
- -p، –profile: اختیاری
- -r، –region: اختیاری (پیشفرض:
ap-northeast-1
)- منطقه AWS
- لازم نیست از این موضوع آگاه باشید زیرا می توان از آن استفاده کرد در سراسر مناطق.
- -f، –force: اختیاری
- ForceMode (سطل را با هم حذف کنید)
- -i، –interactive: اختیاری
- حالت تعاملی برای انتخاب سطل
حالت تعاملی
انتخاب BucketName
در حالت تعاملی(-i
گزینه)، می توانید نام سطل ها را جستجو کرده و سطل ها را انتخاب کنید.
به گونه ای طراحی شده است که قابل جستجو و حذف باشد در سراسر مناطق، بنابراین می توان از آن استفاده کرد بدون اطلاع از منطقه.
میتونه باشه خالی.
❯ cls3 -i
Filter a keyword of bucket names: test-goto
سپس نام سطل ها را در UI انتخاب می کنید.
? Select buckets.
[Use arrows to move, space to select, <right> to all, <left> to none, type to filter]
> [x] test-goto-bucket-1
[ ] test-goto-bucket-2
[x] test-goto-bucket-3
سرانجام
من یک ابزار CLI برای حذف سریع و خالی کردن سطل های S3 ایجاد کردم.
اگر دوست دارید می توانید از آن استفاده کنید!