J'ai plusieurs comptes AWS et je dois répertorier tous les compartiments S3 par compte, puis afficher la taille totale de chaque compartiment.
Actuellement, je ne peux voir que la taille de stockage d'un seul compartiment S3 avec:
aws s3 ls s3://mybucket --recursive --human-readable --summarize
Réponses:
Résolution 1
J'ai donc résolu cela avec le script suivant. J'ai initialement posté la question juste au cas où il y aurait un moyen plus simple dont je n'étais pas au courant.
Résolution 2
Utilisation des tableaux de bord dans CloudWatch dans la console AWS.
Vous pouvez ensuite simplement spécifier tous les compartiments S3 et ajouter les statistiques des nombres pour afficher les métriques de taille de stockage.
Cela ne vous coûtera pas beaucoup d'appels API et peut être considérablement plus rapide en fonction de la taille des compartiments s3 (cela prend un certain temps pour obtenir la taille sur de très grands compartiments).
Verdict
La création du tableau de bord ( résolution 2 ) sur chaque compte AWS a été l'option la plus efficace pour moi, car il est beaucoup plus rapide pour moi de me connecter et de saisir manuellement les métriques de chaque compte AWS que d'attendre la fin des appels d'API de scripts. :(
la source
| awk END'{print}'
?[@]
in"${buckets[@]}"
?Vous devrez écrire un script qui analyse et interroge ces données car, à ma connaissance, il n'y a pas d'outil ni de fonction cli qui effectue cela. Heureusement, vous pouvez rassembler toutes ces informations avec la CLI.
Répertoriez et analysez tous les comptes de votre organisation.
Pour chaque compte, répertoriez et analysez tous les compartiments.
Enfin, obtenez la taille de chaque compartiment au sein de chaque compte. Vous pouvez utiliser la même commande cli que vous étiez avant, mais soyez averti que vous allez répertorier la taille individuelle de chaque élément dans le compartiment. Vous pouvez également utiliser cette commande cli pour obtenir la taille du compartiment.
la source
Vous devrez écrire un script pour ce faire, sauf s'il existe un outil pour le faire que je ne trouve pas.
Si vous travaillez avec plusieurs comptes aws, vous devrez basculer entre les comptes pour obtenir les tailles de compartiment.
Pour obtenir tous les seaux et leur taille totale, vous pouvez utiliser ' aws s3api '. En utilisant,
list-buckets
vous pouvez obtenir tous les compartiments dans un seul compte, puis vous pourrez répertorier leurs tailles et essayer le compte suivant.la source
Aucun de ceux-ci n'affiche la taille du compartiment si le contrôle de version est activé et que des quantités massives de données ont été "supprimées". Dans la console de l'interface graphique S3, l'onglet Métriques affiche ce pour quoi vous êtes facturé.
Supprimé la commande suivante d'un script trouvé sur /server/84815/how-can-i-get-the-size-of-an-amazon-s3-bucket . Cela fonctionne bien sous Windows. Suppléant
yourregion
etyourbucketname
: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
Cela donne la taille moyenne en octets sur les jours délimités par les heures de début et de fin. Le résultat peut vous choquer si le contrôle de version est activé (actif) dans votre compartiment et que vous pensez avoir "supprimé" d'énormes quantités de données.
Pour nettoyer les compartiments prenant en charge la gestion des versions, vous devez définir une règle LifeCycle. Vous pouvez choisir de supprimer définitivement les versions précédentes. Vous pouvez omettre les cases à cocher à l'étape Transitions.
la source