Fehlerbehebung für die Versionsverwaltung - Amazon Simple Storage Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Fehlerbehebung für die Versionsverwaltung

Die folgenden Themen können bei der Behebung von allgemeinen Problemen mit der Amazon-S3-Versionsverwaltung hilfreich sein.

Ich möchte Objekte wiederherstellen, die in einem Bucket mit aktivierter Versionsverwaltung versehentlich gelöscht wurden.

Wenn Objektversionen aus S3-Buckets gelöscht werden, hat Amazon S3 im Allgemeinen keine Möglichkeit, diese wiederherzustellen. Wenn Sie jedoch die S3-Versionsverwaltung in Ihrem S3-Bucket aktiviert haben, kann ein Objekt mit einer DELETE-Anforderung, in der keine Versions-ID angegeben ist, nicht dauerhaft gelöscht werden. Stattdessen wird eine Löschmarkierung als Platzhalter hinzugefügt. Diese Löschmarkierung wird zur aktuellen Version des Objekts.

Gehen Sie wie folgt vor, um zu überprüfen, ob Ihre gelöschten Objekte dauerhaft oder vorübergehend (mit einer Löschmarkierung an ihrer Stelle) gelöscht wurden:

  1. Melden Sie sich bei der Amazon S3 S3-Konsole an AWS Management Console und öffnen Sie sie unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie im linken Navigationsbereich Buckets aus.

  3. Wählen Sie in der Liste Buckets den Namen des Buckets aus, der das Objekt enthält.

  4. Aktivieren Sie in der Liste Objekte den Schalter Versionen anzeigen rechts neben der Suchleiste und suchen Sie dann in der Suchleiste nach dem gelöschten Objekt. Dieser Schalter ist nur verfügbar, wenn die Versionsverwaltung zuvor für den Bucket aktiviert wurde.

    Sie können auch das S3 Inventory verwenden, um nach gelöschten Objekten zu suchen.

  5. Wenn Sie das Objekt nicht finden können, nachdem Sie Versionen anzeigen eingeschaltet oder einen Bestandsbericht erstellt haben, und auch keine Löschmarkierung für das Objekt zu finden ist, ist der Löschvorgang dauerhaft und das Objekt kann nicht wiederhergestellt werden.

Sie können den Status eines gelöschten Objekts auch überprüfen, indem Sie die HeadObject API-Operation von AWS Command Line Interface (AWS CLI) aus verwenden. Verwenden Sie hierfür den folgenden Befehl head-object und ersetzen Sie die user input placeholders durch Ihre eigenen Informationen:

aws s3api head-object --bucket example-s3-bucket --key index.html

Wenn Sie den Befehl head-object für ein versioniertes Objekt ausführen, dessen aktuelle Version eine Löschmarkierung ist, erhalten Sie den Fehler 404 Nicht gefunden. Beispielsweise:

Beim Aufrufen des HeadObject Vorgangs ist ein Fehler aufgetreten (404): Not Found

Wenn Sie den Befehl head-object für ein versioniertes Objekt ausführen und die Versions-ID des Objekts angeben, ruft Amazon S3 die Metadaten des Objekts ab und bestätigt damit, dass das Objekt noch vorhanden ist und nicht dauerhaft gelöscht wurde.

aws s3api head-object --bucket example-s3-bucket --key index.html --version-id versionID

{
"AcceptRanges": "bytes",
"ContentType": "text/html",
"LastModified": "Thu, 16 Apr 2015 18:19:14 GMT",
"ContentLength": 77,
"VersionId": "Zg5HyL7m.eZU9iM7AVlJkrqAiE.0UG4q",
"ETag": "\"30a6ec7e1a9ad79c203d05a589c8b400\"",
"Metadata": {}
}

Wenn das Objekt gefunden wird und die neueste Version eine Löschmarkierung ist, ist die vorherige Version des Objekts immer noch vorhanden. Da die Löschmarkierung die aktuelle Version des Objekts darstellt, können Sie das Objekt wiederherstellen, indem Sie die Löschmarkierung löschen.

Nachdem Sie die Löschmarkierung dauerhaft entfernt haben, wird die zweitneueste Version des Objekts zur aktuellen Version des Objekts, sodass Ihr Objekt wieder verfügbar ist. Eine visuelle Darstellung der Wiederherstellung von Objekten finden Sie unter Entfernen von Löschmarkierungen.

Um eine bestimmte Version eines Objekts entfernen zu können, müssen Sie der Bucket-Eigentümer sein. Um eine Löschmarkierung dauerhaft zu löschen, müssen Sie Ihre Versions-ID in einer DeleteObject-Anforderung angeben. Verwenden Sie zum Löschen der Löschmarkierung den folgenden Befehl und ersetzen Sie die user input placeholders durch Ihre eigenen Informationen:

aws s3api delete-object --bucket example-s3-bucket --key index.html --version-id versionID

Weitere Informationen über den Befehl delete-object finden Sie unter delete-object in der AWS CLI -Befehlsreferenz. Weitere Informationen zum dauerhaften Löschen von Löschmarkierungen finden Sie unter Verwalten von Löschmarkierungen.

Ich möchte versionierte Objekte dauerhaft löschen

In einem Bucket mit aktivierter Versionsverwaltung kann ein Objekt mit einer DELETE-Anforderung ohne Versions-ID nicht dauerhaft gelöscht werden. Bei einer solchen Anforderung wird vielmehr eine Löschmarkierung eingefügt.

Um versionierte Objekte dauerhaft zu löschen, können Sie eine der folgenden Methoden auswählen:

  • Erstellen Sie eine S3-Lebenszyklusregel, um nicht aktuelle Versionen dauerhaft zu löschen. Um nicht aktuelle Versionen dauerhaft zu löschen, wählen Sie Nicht aktuelle Versionen von Objekten dauerhaft löschen aus und geben Sie anschließend eine Zahl unter Tage, nachdem Objekte veraltet sind ein. Sie können die Anzahl der beizubehaltenden neueren Versionen optional angeben, indem Sie einen Wert unter Number of newer versions to retain (Anzahl der beizubehaltenden neueren Versionen) eingeben. Weitere Informationen zum Erstellen dieser Regel finden Sie unter Festlegen einer S3-Lebenszyklus-Konfiguration.

  • Löschen Sie eine angegebene Version, indem Sie die Versions-ID in die DELETE-Anforderung aufnehmen. Weitere Informationen hierzu finden Sie unter Dauerhaftes Löschen von versionierten Objekten.

  • Erstellen Sie eine Lebenszyklusregel, um aktuelle Versionen ablaufen zu lassen. Um aktuelle Versionen von Objekten ablaufen zu lassen, wählen Sie Aktuelle Objektversionen ablaufen lassen aus und fügen Sie dann eine Zahl unter Tage nach Objekterstellung ein. Weitere Informationen zum Erstellen dieser Lebenszyklusregel finden Sie unter Festlegen einer S3-Lebenszyklus-Konfiguration.

  • Um alle versionierten Objekte und Löschmarkierungen dauerhaft zu löschen, erstellen Sie zwei Lebenszyklusregeln: eine, um aktuelle Versionen ablaufen zu lassen und nicht aktuelle Versionen von Objekten dauerhaft zu löschen, und die andere, um Löschmarkierungen für abgelaufene Objekte zu löschen.

In einem Bucket mit aktivierter Versionsverwaltung können mit einer DELETE-Anforderung, in der keine Versions-ID angegeben ist, nur Objekte mit einer Versions-ID NULL entfernt werden. Wenn das Objekt hochgeladen wurde, als die Versionsverwaltung aktiviert war, wird mit einer DELETE-Anforderung, in der keine Versions-ID angegeben ist, eine Löschmarkierung für dieses Objekt erstellt.

Anmerkung

Bei Buckets mit aktivierter S3-Objektsperre verursacht eine DELETE-Objektanforderung mit einer ID einer geschützten Objektversion den Fehler 403 Zugriff verweigert. Eine DELETE-Objektanforderung ohne Versions-ID fügt eine Löschmarkierung als neueste Version des Objekts mit der Antwort 200 OK hinzu. Objekte, die durch die Objektsperre geschützt sind, können erst dauerhaft gelöscht werden, wenn ihre Aufbewahrungszeiträume und gesetzlichen Aufbewahrungsfristen aufgehoben sind. Weitere Informationen finden Sie unter So funktioniert die S3-Objektsperre.

Nach dem Aktivieren der Bucket-Versionsverwaltung stelle ich Leistungseinbußen fest

Bei Buckets mit aktivierter Versionsverwaltung kann es zu Leistungseinbußen kommen, wenn zu viele Löschmarkierungen oder versionierte Objekte vorhanden sind und wenn bewährte Methoden nicht befolgt werden.

Zu viele Löschmarkierungen

Nachdem Sie die Versionsverwaltung für einen Bucket aktiviert haben, wird mit einer DELETE-Anforderung ohne Versions-ID an ein Objekt eine Löschmarkierung mit einer eindeutigen Versions-ID erstellt. Lebenszyklus-Konfigurationen mit der Regel Aktuelle Objektversionen ablaufen lassen fügen jedem Objekt eine Löschmarkierung mit einer eindeutigen Versions-ID hinzu. Wenn zu viele Löschmarkierungen vorhanden sind, kann dies die Leistung im Bucket beeinträchtigen.

Wenn die Versionsverwaltung für einen Bucket ausgesetzt wird, markiert Amazon S3 die Versions-ID bei neu erstellten Objekten als NULL. Eine Ablaufaktion in einem Bucket mit ausgesetzter Versionsverwaltung bewirkt, dass Amazon S3 eine Löschmarkierung mit der Versions-ID NULL erstellt. In einem Bucket mit ausgesetzter Versionsverwaltung wird für jede Löschanforderung eine NULL-Löschmarkierung erstellt. Diese NULL-Löschmarkierungen werden auch als Löschmarkierungen für abgelaufenes Objekt bezeichnet, wenn alle Objektversionen gelöscht werden und nur eine einzelne Löschmarkierung übrig bleibt. Wenn sich zu viele NULL-Löschmarkierungen ansammeln, kommt es zu Leistungseinbußen im Bucket.

Zu viele versionierte Objekte

Wenn ein Bucket mit aktivierter Versionsverwaltung Objekte mit Millionen von Versionen enthält, kann es vermehrt zu Fehlern 503 Service nicht verfügbar kommen. Wenn Sie eine deutliche Zunahme der HTTP-Antworten 503 Service Unavailable feststellen, die für PUT- oder DELETE-Objektanforderungen an einen Bucket mit aktivierter Versionsverwaltung eingehen, befinden sich möglicherweise ein oder mehrere Objekte in dem Bucket, für die Millionen von Versionen vorhanden sind. Wenn Sie Objekte mit Millionen Versionen haben, drosselt Amazon S3 Anforderungen an den Bucket automatisch. Durch die Drosselung von Anforderungen wird Ihr Bucket vor übermäßigem Anforderungsdatenverkehr geschützt, der andere Anforderungen an denselben Bucket verhindern könnte.

Um festzustellen, zu welchen Objekten es Millionen Versionen gibt, verwenden Sie S3 Inventory. S3 Inventory generiert einen Bericht, der eine flache Dateiliste der Objekte in einem Bucket enthält. Weitere Informationen finden Sie unter Amazon S3 Inventory.

Um zu überprüfen, ob der Bucket viele versionierte Objekte enthält, verwenden Sie die S3-Storage-Lens-Metriken, um die Anzahl der Objekte der aktuellen Version, die Anzahl nicht aktueller Versionsobjekte und die Anzahl der Löschmarkierungsobjekte anzuzeigen. Weitere Informationen zu Storage-Lens-Metriken finden Sie unter Amazon S3-Storage-Lens-Metrikglossar.

Das Amazon-S3-Team fordert die Kunden auf, Anwendungen zu überprüfen, die wiederholt dasselbe Objekt überschreiben und damit potenziell Millionen Versionen für dieses Objekt erstellen, um festzustellen, ob die Anwendung wie beabsichtigt funktioniert. Beispielsweise kann eine Anwendung, die eine Woche lang jede Minute dasselbe Objekt überschreibt, über zehntausend Versionen erstellen. Wir empfehlen, für jedes Objekt weniger als einhunderttausend Versionen zu speichern. Wenn Sie einen Anwendungsfall haben, der Millionen von Versionen für ein oder mehrere Objekte erfordert, wenden Sie sich an das AWS Support Team, um Unterstützung bei der Suche nach einer besseren Lösung zu erhalten.

Bewährte Methoden

Um Leistungseinbußen im Zusammenhang mit der Versionsverwaltung zu vermeiden, empfehlen wir Ihnen, den folgenden bewährten Methoden zu folgen:

  • Aktivieren Sie eine Lebenszyklusregel, um die vorherigen Versionen von Objekten ablaufen zu lassen. Sie können beispielsweise eine Lebenszyklusregel erstellen, nach der nicht aktuelle Versionen ablaufen, wenn das Objekt 30 Tage nicht mehr aktuell ist. Sie können auch mehrere nicht aktuelle Versionen beibehalten, wenn Sie nicht alle löschen möchten. Weitere Informationen finden Sie unter Festlegen einer S3-Lebenszyklus-Konfiguration.

  • Aktivieren Sie eine Lebenszyklusregel, um Löschmarkierungen für abgelaufene Objekte zu löschen, denen keine Datenobjekte im Bucket zugeordnet sind. Weitere Informationen finden Sie unter Löschen abgelaufener Löschmarkierungen für Objekte.

Weitere bewährte Methoden zur Amazon-S3-Leistungsoptimierung finden Sie unter Bewährte Methoden für Designmuster.