5 sposobów na usunięcie AWS S3 bucket

Jak w prosty sposób usunąć AWS Amazon S3 bucket

Gdy chcemy usunąć AWS S3 bucket, to sprawa wydaje się prosta. Najłatwiej byłoby zaznaczyć S3 bucket do usunięcia i kliknąć delete. Tylko jeśli zawiera pliki, to najpierw będziemy musieli je usunąć.

AWS delete bucket S3
AWS delete bucket S3 errorr

To jednak tylko teoria. W praktyce, jeśli bucket jest naprawdę duży, zawiera miliony obiektów, to sprawa już nie jest taka prosta. Na szczęście mamy kilka możliwości, by to zrobić.

1) Usunięcie zawartości S3 przez UI

aws s3 delete bucket simple

W skrócie logujemy się przez www i ręcznie usuwamy obiekty z S3 po to, żeby usunąć na końcu pusty bucket. Jeśli mamy kilkaset plików to spoko. Niestety już przy kilku tysiącach plików czas takiej operacji bardzo się wydłuża, a cała operacja wydaje się męczarnią.

2) Usunięcie zawartości S3 za pomocą CLI (S3 RB)

aws s3 rb s3://bucket-name --force

Kolejny sposób dużo lepszy i szybszy niż poprzedni. Jedno polecenie i już. Polecenie usunie bez problemu kilkaset, albo nawet kilka tysięcy plików, a potem pusty bucket. Z doświadczenia wiem jednak, że jeśli dłużej będzie działało, to operacja zostanie przerwana. Często już po godzinie polecenie przestawało działać. Będziemy musieli ponawiać polecenie kilka, albo kilkanaście razy przy bardzo dużej ilości plików.

Uwaga. Polecenie może służyć tylko, do usuwania niewersjonowanych zasobów z S3.

3) Automatyczne usunięcie S3 za pomocą CLI (S3 RM)

aws s3 rm s3://bucket-name/example --recursive

Możemy zrobić małą automatyzację i dodać polecenie czyszczenia zawartości S3 do skryptu, który uruchomimy albo po prostu do crona. To działa zdecydowanie lepiej, ponieważ polecenie jest wywoływane co pewien określony przez nas czas i kolejne pliki są usuwane. Zamiast klikać po interfejsie, wszystko robi się automatycznie. Gdy wszystkie obiekty zostaną usunięte, to wtedy możemy usunąć pusty bucket.

4) Usunięcie zawartości S3 przez UI empty

aws empty s3 bucket

Możemy także wybrać bucket na liście naszych S3 i kliknąć Empty. Lepiej się nie pomylić, bo operacja nie może być anulowana. Sam AWS sugeruje, że jeśli bucket zawiera bardzo dużo plików to lepiej użyć lifecycle rule do usunięcia zawartości. Jak to zrobić można się przekonać w kolejnym punkcie.

5) Usunięcie S3 przez politykę lifecycle

Amazon s3 bucket create lifecycle rules

Bardzo prosty i skuteczny sposób, który można użyć bez zaawansowanej znajomości AWS. Wystarczy zalogować się na konto AWS przejść do bucketu, który chce się usunąć i utworzyć lifecycle policy. Zaznaczamy ‘usuń aktualną wersję obiektu’ i poprzednią, jeśli używaliśmy ‘Bucket Versioning’. Ja zaznaczam dla pewności jeszcze ‘Delete expired delete markers or incomplete multipart uploads’.

Jako liczbę dni, po których AWS ma usunąć obiekty, podajemy “1“. Dzięki temu wszystkie obiekty, które są starsze niż 1 dzień, będą usuwane automatycznie przez AWS.

Drobna uwaga usuwanie dużych bucketów może trwać trochę czasu, ponieważ operacja odbywa się asynchronicznie. U mnie usunięcie zawartości jednego dużego bucketu trwało 4 dni!! Jeśli jesteście niecierpliwi i macie dużo obiektów to sprawdźcie sobie codziennie wielkość bucketu Amazon S3. Zobaczycie, że ilość plików oraz wielkość bucketu będzie się zmniejszać.

Amazon s3 bucket delete all objects lifecycle rules

Podsumowanie

Sposób usuwania bucketu dobrze jest dobrać do wielkości plików i mieć świadomość o plusach i minusach poszczególnych rozwiązań. Tak naprawdę sposobów usunięcia zawartości Amazon S3 jest więcej. Ja wybrałem i opisałem te najbardziej praktyczne według mnie. Daj znać w komentarzu, jeśli znasz jakiś inny prosty i szybki sposób na usunięcie z AWS S3 dużego bucketu i jego zawartości.

Celowo pomijam tutaj rozwiązania typu IaC takie jak Terraform czy CloudFormation, bo tam wystarczy tylko wprowadzić zmianę w kodzie.

Dokumentację dotyczącą S3 znajdziecie pod tym linkiem https://docs.aws.amazon.com/s3/index.html

Jeśli spodobał Ci się wpis, zobacz inne artykuły dotyczące AWS, które znajdziesz w kategorii AWS.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *