Mam wiele kont AWS i muszę wyświetlić listę wszystkich segmentów S3 na konto, a następnie wyświetlić łączny rozmiar każdego segmentu.
Obecnie mogę wyświetlić rozmiar pamięci pojedynczej łyżki S3 za pomocą:
aws s3 ls s3://mybucket --recursive --human-readable --summarize
Odpowiedzi:
Rozdzielczość 1
Rozwiązałem to za pomocą następującego skryptu. Pierwotnie opublikowałem pytanie na wypadek, gdyby istniał łatwiejszy sposób, o którym nie wiedziałem.
Rozdzielczość 2
Korzystanie z pulpitów nawigacyjnych w CloudWatch w konsoli AWS.
Następnie możesz po prostu określić wszystkie segmenty S3 i dodać statystyki liczb, aby pokazać miary wielkości magazynu.
Nie będzie to kosztować dużo wywołań API i może być znacznie szybsze w zależności od wielkości segmentów s3 (zajmuje trochę czasu, aby uzyskać rozmiar w bardzo dużych segmentach).
Werdykt
Tworzenie pulpitu nawigacyjnego ( rozdzielczość 2 ) na każdym koncie AWS było dla mnie najbardziej wydajną opcją , ponieważ jest o wiele szybsze logowanie się i pobieranie danych ręcznie z każdego konta AWS, niż czekanie na zakończenie wywołań API skryptów. :(
źródło
| awk END'{print}'
?[@]
w"${buckets[@]}"
średniej?Będziesz musiał napisać skrypt, który analizuje i wysyła zapytania do tych danych, ponieważ o ile mi wiadomo, nie ma narzędzia ani funkcji cli, które to wykonałyby. Na szczęście możesz zebrać wszystkie te informacje za pomocą CLI.
Wyświetl listę i przeanalizuj wszystkie konta w swojej organizacji.
Dla każdego konta wyświetl i przeanalizuj wszystkie segmenty.
Na koniec uzyskaj rozmiar każdego segmentu na każdym koncie. Możesz użyć tej samej komendy cli, którą byłeś wcześniej, ale ostrzegaj, że będziesz wyświetlał indywidualny rozmiar każdego elementu w wiadrze. Możesz również użyć tego polecenia cli, aby uzyskać rozmiar wiadra.
źródło
Będziesz musiał napisać skrypt, aby to zrobić, chyba że istnieje narzędzie, którego nie mogę znaleźć.
Jeśli pracujesz z wieloma kontami aws, musisz przełączać się między kontami, aby uzyskać rozmiary segmentów.
Aby uzyskać wszystkie wiadra i ich całkowity rozmiar, możesz użyć „ aws s3api ”. Za pomocą
list-buckets
możesz uzyskać wszystkie wiadra na jednym koncie, a następnie będziesz mógł wymienić ich rozmiary i wypróbować następne konto.źródło
Żadne z nich nie pokazuje rozmiaru segmentu, jeśli włączono kontrolę wersji, a ogromne ilości danych zostały „usunięte”. W konsoli GUI S3 karta Metryki pokazuje, za co płacisz.
Zeskrobałem następujące polecenie ze skryptu znalezionego na /server/84815/how-can-i-get-the-size-of-an-amazon-s3-bucket . Działa dobrze w systemie Windows. Zastępstwo
yourregion
iyourbucketname
:aws cloudwatch get-metric-statistics --namespace AWS/S3 --start-time 2019-05-09T00:01:00Z --end-time 2019-05-11T23:59:00Z --period 86400 --statistics Average --region yourregion --metric-name BucketSizeBytes --dimensions Name=BucketName,Value=yourbucketname Name=StorageType,Value=StandardStorage
Daje to średni rozmiar w bajtach w dniach ograniczonych czasem rozpoczęcia i zakończenia. Wynik może cię zszokować jeśli Twój segment ma włączoną kontrolę wersji (aktywne) i uważasz, że „usunąłeś” ogromne ilości danych.
Aby wyczyścić segmenty obsługujące kontrolę wersji, należy ustawić regułę cyklu życia. Możesz trwale usunąć poprzednie wersje. Możesz pominąć pola wyboru w kroku Przejścia.
źródło