Wie rufe ich ein Amazon-S3-Objekt ab, das ich in einem versionsverwaltungsfähigen Allzweck-Bucket gelöscht habe?
Ich möchte ein Objekt abrufen, das ich aus meinem Amazon Simple Storage Service (Amazon S3)-Allzweck-Bucket gelöscht habe, für den die Versionsverwaltung aktiviert ist.
Kurzbeschreibung
Hinweis: Die S3-Versionsverwaltung ist nur für Allzweck-Buckets verfügbar. Verzeichnis- und Tabellen-Buckets unterstützen die S3-Versionsverwaltung nicht.
Wenn du ein Objekt aus einem versionsverwaltungsfähigen Bucket löschst, erstellt Amazon S3 eine Löschmarkierung für das Objekt. Die Löschmarkierung wird zur aktuellen Version des Objekts, und das Objekt wird zur vorherigen Version. Mit einer Löschmarkierung reagiert Amazon S3 auf Anforderungen für das Objekt, als ob du das Objekt gelöscht hättest. Wenn du beispielsweise eine GET-Anforderung für das Objekt sendest, gibt Amazon S3 einen Fehler zurück.
Um ein Objekt abzurufen, das du aus einem versionsfähigen Bucket gelöscht hast, ergreife eine der folgenden Maßnahmen:
- Lade die vorherige Version des Objekts herunter. Du musst über die Berechtigung s3:GetObjectVersion verfügen.
- Verwende ein AWS-Konto, das über die Berechtigung s3:DeleteObjectVersion verfügt, um eine Löschmarkierung zu entfernen. Die neueste, nicht gelöschte Version wird dann zur aktuellen Version des Objekts, sodass du in einem versionsfähigen Bucket auf das zuvor gelöschte Objekt zugreifen kannst.
- Hinweis: Wenn du das Löschen mit Multi-Faktor-Authentifizierung (MFA) für den Bucket konfiguriert hast, musst du das Löschen mit MFA verwenden, um die Löschmarkierung zu entfernen.
Lösung
Wichtig: Du kannst keine Daten wiederherstellen, die du dauerhaft aus einem Bucket löschst.
Die Amazon-S3-Konsole verwenden, um die vorherige Version des Objekts herunterzuladen
Gehe wie folgt vor:
- Öffne dieAmazon-S3-Konsole.
- Wähle im Navigationsbereich Buckets und dann den Bucket des gelöschten Objekts aus.
- Um eine Liste der Objektversionen anzuzeigen, aktiviere Versionen anzeigen.
- Wähle die Version des gelöschten Objekts aus, das du abrufen möchtest.
- Wähle Aktionen und dann Herunterladen aus.
Die AWS CLI verwenden, um die vorherige Version des Objekts herunterzuladen
Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest. Ersetze in den folgenden Befehlen DOC-EXAMPLE-BUCKET durch den Namen deines Buckets.
Gehe wie folgt vor:
-
Führe den Befehl list-object-versions aus, um die Objektversionen aufzulisten:
aws s3api list-object-versions --bucket DOC-EXAMPLE-BUCKET --prefix examplefolder/Hinweis: Der vorherige Befehl enthält die Option --prefix, um die Ergebnisse nach dem angegebenen Schlüsselnamen-Präfix zu filtern. Verwende diese Option, um die Anzahl der Ergebnisse zu reduzieren, wenn dein Bucket viele Objektversionen enthält.
-
Notiere dir in der Befehlsausgabe die Versions-ID der vorherigen Version des Objekts.
-
Führe den Befehl get-object aus, um die Version abzurufen:
aws s3api get-object --bucket DOC-EXAMPLE-BUCKET --key example.txt --version-id example.d6tjAKF1iObKbEnNQkIMPjj filename.txt
Die Amazon-S3-Konsole verwenden, um die Löschmarkierung zu entfernen
Gehe wie folgt vor:
- Öffne von dem Konto, dem der Bucket des gelöschten Objekts gehört, die Amazon-S3-Konsole.
- Wähle im Navigationsbereich Buckets und dann den Bucket des gelöschten Objekts aus.
- Um eine Liste der Objektversionen anzuzeigen, aktiviere Versionen anzeigen.
- Wähle die Löschmarkierung des Objekts aus.
Wichtig: Stelle sicher, dass du die Löschmarkierung auswählst und nicht das Objekt selbst. Andernfalls kannst du das Objekt nicht abrufen. - Gib auf der Seite Objekte löschen für Permanently delete objects? (Objekte endgültig löschen?) permanently delete (endgültig löschen) ein.
- Wähle Löschen aus.
Wichtig: Du kannst die Amazon-S3-Konsole nicht verwenden, um Ordner wiederherzustellen. Stattdessen musst du die AWS CLI oder das AWS-SDK verwenden.
Die AWS CLI verwenden, um die Löschmarkierung zu entfernen
Du kannst die AWS CLI verwenden, um die Löschmarkierung für einige Objekte, Tausende von Objekten oder Millionen von Objekten zu entfernen.
Die Löschmarkierung auf mehreren Objekten entfernen
Gehe wie folgt vor:
-
Führe den folgenden Befehl list-object-versions mit dem --query-Parameter aus:
aws s3api list-object-versions --bucket DOC-EXAMPLE-BUCKET --prefix examplefolder/ --query 'DeleteMarkers[*].{Key: Key, VersionId: VersionId}'Hinweis: Der vorherige Befehl enthält die Option --prefix, um die Ergebnisse nach dem angegebenen Schlüsselnamenpräfix zu filtern.
-
Notiere dir aus der Befehlsausgabe die Versions-ID der Löschmarkierung.
Wichtig: Stelle sicher, dass du die Versions-ID der Löschmarkierung notiert hast. Wenn du eine Objektversion löschst, kannst du das Objekt nicht wiederherstellen. -
Führe den Befehl delete-object aus, um die Löschmarkierung zu entfernen:
aws s3api delete-object --bucket DOC-EXAMPLE-BUCKET --key example.txt --version-id 'example.d6tjAKF1iObKbEnNQkIMPjj' -
Führe den Befehl ls aus, um zu überprüfen, ob die Löschmarkierung entfernt wurde:
aws s3 ls s3://DOC-EXAMPLE-BUCKET
Die Löschmarkierung auf Tausenden von Objekten entfernen
Warnung: Es empfiehlt sich, die Daten zu sichern, bevor du den folgenden Befehl list-object-versions ausführst. Der Befehl verwendet die API-Aktion s3api delete-object, um die identifizierten Objekte der Löschmarkierungen zu löschen. Das Löschen von Objekten ist eine permanente Aktion. Änderungen an dieser Befehlsstruktur können zu unerwartetem Datenverlust führen.
Gehe wie folgt vor:
- Öffne die AWS CloudShell-Konsole.
- Führe den Befehl list-object-versions aus:
Hinweis: Der vorherige Befehl verwendet das jq-Tool, um die ListObjectVersions-Antwort für DeleteMarkers der aktuellen Version zu analysieren. Standardmäßig ist jq auf AWS CloudShell installiert. Wenn du nicht mit der Shell-Umgebung interagierst, wird die Shell-Sitzung beendet. Weitere Informationen zum jq-Tool findest du unter./jq auf der jq-Website.aws s3api list-object-versions --bucket DOC-EXAMPLE-BUCKET --prefix examplefolder/ --output json --query 'DeleteMarkers[?IsLatest==`true`].[Key, VersionId]' | jq -r '.[] | "--key " + "'\\\"'" + .[0] + "'\\\"'" + " --version-id " + .[1]' | xargs -L1 -t aws s3api delete-object --bucket DOC-EXAMPLE-BUCKET
Die Löschmarkierung von Millionen von Objekten entfernen
Verwende ein benutzerdefiniertes Skript mit dem AWS SDK, um die Löschmarkierung für Millionen von Objekten in einem Bucket zu entfernen. Weitere Informationen findest du auf der Registerkarte Using the AWS SDKs (AWS SDKs verwenden).
Hinweis: Wenn du list-object-versions auf einem Bucket ausführst, der Millionen von Objekten enthält, tritt möglicherweise ein Timeout auf.
- Themen
- Storage
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor 2 Jahren
AWS OFFICIALAktualisiert vor 3 Jahren
AWS OFFICIALAktualisiert vor einem Jahr