Warum gibt es eine Diskrepanz zwischen meinen CloudWatch-Metriken und den AWS-CLI-Speichermetriken für Amazon S3?

Letzte Aktualisierung: 03.12.2021

Ich stelle eine Diskrepanz zwischen den Amazon-CloudWatch-Metriken und den Speichermetriken der AWS Command Line Interface (AWS CLI, AWS-Befehlszeilenschnittstelle) für Amazon Simple Storage Service (Amazon S3) fest. Warum gibt es einen so großen Unterschied bei der gemeldeten Speichergröße zwischen den beiden Quellen?

Kurzbeschreibung

Wenn eine Diskrepanz zwischen den CloudWatch-Speichermetriken für Amazon S3 und den mit der AWS CLI berechneten Metriken vorliegt, überprüfen Sie Folgendes:

  • Objekt-Versioning.
    Hinweis: Beim Objekt-Versioning in Amazon S3 werden mehrere Versionen eines Objekts im Bucket beibehalten. Standardmäßig ist das Amazon-S3-Objekt-Versioning für Buckets deaktiviert, weshalb Sie die Funktion explizit aktivieren müssen. Darüber hinaus werden bei den Berechnungen der AWS-CLI-Speichermetriken nur die neueste Version und Größe jedes im Bucket gespeicherten Objekts gezählt.
  • Unvollständige mehrteilige Uploads.
    Hinweis: Unvollständige mehrteilige Uploads sind nicht in den AWS-CLI-Speicherberechnungen enthalten, werden jedoch als Speicher in den CloudWatch-Metriken berechnet.

Um die Ursache für die Diskrepanz beim gemeldeten Speicher zu ermitteln, überprüfen Sie, ob das Objekt-Versioning aktiviert ist. Suchen Sie außerdem nach mehrteiligen Uploads im Bucket. Diese beiden Faktoren können zu einem erhöhten Wert bei der berechneten Bucket-Größe in CloudWatch führen. Weitere Informationen finden Sie unter Tägliche Speichermetriken für Buckets in Amazon S3 CloudWatch.

Tipp: Wenn in Amazon S3 unvollständige mehrteilige Uploads vorliegen, sollten Sie eine Regel für die Lebenszyklus-Konfiguration erstellen. Diese Regel bereinigt automatisch alle unvollständigen Teile und senkt so die Datenspeicherkosten. Beachten Sie, dass Lebenszyklusregeln asynchron funktionieren, sodass es dabei zu Verzögerungen kommen kann. Sobald die Objekte zum Löschen markiert sind, wird Ihnen kein Speicher in Rechnung gestellt, selbst wenn die Objekte noch nicht entfernt wurden.

Darüber hinaus werden die Amazon-S3-Überwachungsmetriken täglich aufgezeichnet, weshalb möglicherweise nicht die aktuellsten Informationen angezeigt werden. In der Zwischenzeit überwacht CloudWatch Ihre AWS-Ressourcen und -Anwendungen in Echtzeit.

Lösung

Tägliche Speichermetriken in CloudWatch

In CloudWatch erfasst die Metrik BucketSizeBytes alle Amazon-S3- und Amazon-S3-Glacier-Speichertypen, die Objektversionen sowie unvollständige mehrteilige Uploads. Dieser Wert wird berechnet, indem alle Objektgrößen, Metadaten im Bucket (sowohl aktuelle als auch ältere Objekte) sowie die Größen von unvollständigen mehrteiligen Uploads zusammengefasst werden. Die Metrik BucketSizeBytes berechnet zum Beispiel die Datenmenge (in Byte), die in einem S3-Bucket in allen folgenden Objektspeicherklassen gespeichert ist:

  • S3 Standard
  • S3 Intelligent-Tiering
  • S3 Standard-IA
  • S3 One Zone-IA
  • S3 Reduced Redundancy Storage
  • S3 Glacier Deep Archive
  • S3 Glacier

Darüber hinaus enthält die Metrik NumberOfObjects in CloudWatch die Gesamtzahl der Objekte, die in einem Bucket für alle Speicherklassen gespeichert sind. Dieser Wert zählt alle Objekte im Bucket (sowohl aktuelle als auch ältere) sowie die Gesamtzahl der Teile unvollständiger mehrteiliger Uploads. Außerdem berechnet die Metrik NumberOfObjects die Gesamtzahl der Objekte für alle Versionen von Objekten im Bucket. Wenn beispielsweise zwei Versionen desselben Objekts vorliegen, werden die beiden Versionen als zwei separate Objekte gezählt. Weitere Informationen finden Sie unter Metriken und Dimensionen.

Tägliche Speicherberechnungen mit der AWS CLI

Verwenden Sie die folgende Befehlssyntax, um die Speichermetriken für Amazon S3 mithilfe der AWS CLI zu berechnen:

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

Diese Befehlssyntax berechnet die Gesamtzahl und -größe der Objekte in Ihrem Amazon-S3-Bucket. Beachten Sie jedoch, dass nur die aktuelle Version (und die Größe) jedes Objekts berechnet wird, das im Bucket gespeichert ist. Mehrteilige Uploads, Löschmarkierungen und ältere Versionen der einzelnen Objekte werden nicht in die Bucket-Gesamtgröße oder die Gesamtzahl der Objekte eingerechnet.

Unvollständige mehrteilige Uploads

Um die Liste der unvollständigen mehrteiligen Uploads zu überprüfen, führen Sie den Befehl list-multipart-uploads aus:

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

Listen Sie anschließend alle Objekte im mehrteiligen Upload auf, indem Sie den Befehl list-parts und den Wert UploadId verwenden:

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

Erstellen einer Lebenszyklusregel

Um mehrteilige Uploads automatisch zu löschen, erstellen Sie eine Regel für die Lebenszyklus-Konfiguration. Dazu gehen Sie wie folgt vor:

1.    Öffnen Sie die Amazon-S3-Konsole.

2.    Wählen Sie die Registerkarte Management (Verwaltung) aus.

3.    Wählen Sie Create new policy (Richtlinie erstellen) aus.

4.    Fügen Sie den Namen der Richtlinie hinzu.

5.    Wählen Sie Select - Delete expired delete markers or incomplete multipart uploads (Auswählen – Abgelaufene Löschmarkierungen oder unvollständige mehrteilige Uploads löschen) aus.

6.    (Optional) Wenn der Bucket nicht versioniert ist, wählen Sie Delete incomplete multipart uploads (Für unvollständige mehrteilige Uploads) aus.

Objekt-Versioning

Um Ihren Amazon-S3-Bucket auf verschiedene Versionen von Objekten zu überprüfen, verwenden Sie die Amazon-S3-Bestandsliste. Eine Amazon-S3-Bestandslistendatei enthält eine Liste der Objekte im Quell-Bucket und Metadaten für die einzelnen Objekte. Die Bestandslistendatei erfasst Metadaten wie Bucket-Name, Objektgröße, Speicherklasse und Versions-ID.


War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?