Pourquoi y a-t-il un écart entre mes métriques CloudWatch et les métriques de stockage AWS CLI pour Amazon S3 ?

Dernière mise à jour : 03/12/2021

Je constate une divergence entre les métriques Amazon CloudWatch et les métriques de stockage de l'AWS Command Line Interface (AWS CLI) pour Amazon Simple Storage Service (Amazon S3). Pourquoi y a-t-il une si grande différence dans la taille de stockage rapportée entre les deux sources ?

Brève description

S'il y a un écart entre vos métriques de stockage CloudWatch pour Amazon S3 et les métriques calculées à l'aide de l'AWS CLI, vérifiez les points suivants :

  • Gestion des versions d'objets.
    Remarque : la fonction de gestion des versions d'objets d'Amazon S3 retient plusieurs versions d'un objet dans votre compartiment. Par défaut, la gestion des versions d'objets d'Amazon S3 est désactivée sur les compartiments, et vous devez explicitement activer la fonction. En outre, les calculs des métriques de stockage de l'AWS CLI ne comptent que la version la plus récente et la taille de chaque objet qui est stocké dans le compartiment.
  • Chargements partitionnés incomplets.
    Remarque : les chargements partitionnés incomplets ne sont pas inclus dans les calculs de stockage de l'AWS CLI, mais sont calculés comme stockage dans vos métriques CloudWatch.

Pour identifier la cause de l'écart dans les rapports, vérifiez si vous avez activé la gestion des versions d'objets et recherchez les chargements partitionnés dans votre compartiment. Ces deux facteurs peuvent entraîner une augmentation de la valeur de la taille du compartiment calculée dans CloudWatch. Pour plus d'informations, consultez Métriques de stockage quotidiennes Amazon S3 CloudWatch pour les compartiments.

Conseil : si vous avez des chargements partitionnés incomplets dans Amazon S3, envisagez de créer une règle de configuration du cycle de vie. Cette règle de configuration du cycle de vie nettoie automatiquement toutes les parties incomplètes, réduisant ainsi le coût du stockage des données. Notez que les règles de cycle de vie fonctionnent de manière asynchrone, de sorte qu'il peut y avoir un retard dans l'opération. Toutefois, dès que les objets sont marqués pour suppression, le stockage ne vous est pas facturé, même si l'objet n'a pas encore été supprimé.

En outre, les métriques de surveillance Amazon S3 sont enregistrées quotidiennement et peuvent donc ne pas afficher les informations les plus récentes. En attendant, CloudWatch surveille vos ressources et applications AWS en temps réel.

Solution

Métriques de stockage quotidiennes dans CloudWatch

Dans CloudWatch, la métrique BucketSizeBytes capture tous les types de stockage Amazon S3 et Amazon S3 Glacier, les versions d'objet et tous les chargements partitionnés incomplets. Cette valeur est calculée en additionnant toutes les tailles d'objet, les métadonnées de votre compartiment (objets actuels et non actuels) et toutes les tailles de chargement partitionné incomplets. Par exemple, la métrique BucketSizeBytes calcule la quantité de données (en octets) stockées dans un compartiment S3 dans toutes les classes de stockage d'objets suivantes :

  • S3 Standard
  • Hiérarchisation intelligente S3
  • S3 Standard - IA
  • S3 unizone – Accès peu fréquent
  • Stockage S3 à redondance réduite
  • S3 Glacier Deep Archive
  • S3 Glacier

En outre, la métrique NumberOfObjects de CloudWatch contient le nombre total d'objets stockés dans un compartiment pour toutes les classes de stockage. Cette valeur compte tous les objets du compartiment (actuels et anciens), ainsi que le nombre total de parties pour tout chargement partitionné incomplet. La métrique NumberOfObjects calcule également le nombre total d'objets pour toutes les versions d'objets dans votre compartiment. Par exemple, si vous avez deux versions du même objet, les deux versions seront comptées comme deux objets distincts. Pour plus d'informations, consultez Métriques et dimensions.

Calculs quotidiens du stockage à l'aide de l'AWS CLI

Pour calculer les métriques de stockage pour Amazon S3 à l'aide de l'AWS CLI, utilisez la syntaxe de commande suivante :

aws s3 ls --summarize --human-readable --recursive s3://bucketname | grep -i total

Cette syntaxe de commande calcule le nombre total et la taille des objets dans votre compartiment Amazon S3. Cependant, notez que seule la version actuelle de chaque objet qui est stocké dans le compartiment (et sa taille) est calculée. Les chargements partitionnés, les marqueurs de suppression et les versions non actuelles de chaque objet ne sont pas calculés dans la taille totale du compartiment ou le nombre total d'objets.

Chargements partitionnés incomplets

Pour consulter la liste des chargements partitionnés incomplets, exécutez la commande list-multipart-uploads :

aws s3api list-multipart-uploads --bucket <bucket-example>

Ensuite, répertoriez tous les objets du chargement partitionné, à l'aide de la commande list-parts et de votre valeur UploadId :

aws s3api list-parts --bucket <bucket-example> --key large_test_file --upload-id <examplevalue>

Créer une règle de cycle de vie

Pour supprimer automatiquement les chargements partitionnés, créez une règle de configuration du cycle de vie. Procédez comme suit :

1.    Ouvrez la console Amazon S3.

2.    Choisissez l'onglet Gestion.

3.    Choisissez Create new policy (Créer une nouvelle politique).

4.    Ajoutez le nom de la politique.

5.    Choisissez Select - Delete expired delete markers or incomplete multipart uploads (Sélectionner – Supprimer les marqueurs de suppression expirés ou les chargements partitionnés incomplets).

6.    (Facultatif) Si votre compartiment n'est pas versionné, choisissez Delete incomplete multipart uploads (Supprimer les chargements partitionnés incomplets).

Gestion des versions des objets

Pour consulter et auditer votre compartiment Amazon S3 pour différentes versions d'objets, utilisez la liste d'inventaire Amazon S3. Un fichier de liste d'inventaire Amazon S3 contient une liste des objets du compartiment source et des métadonnées pour chaque objet. Le fichier de liste d'inventaire capturera des métadonnées telles que le nom du compartiment, la taille de l'objet, la classe de stockage et l'ID de version.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?