Wiederherstellen früherer Versionen - 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.

Wiederherstellen früherer Versionen

Sie können Versioning verwenden, um frühere Versionen eines Objekts abzurufen. Hierfür gibt es zwei Ansätze:

  • Kopieren einer vorhergehenden Version des Objekts in denselben Bucket.

    Das kopierte Objekt wird zur aktuellen Version dieses Objekts, und alle Objektversionen werden beibehalten.

  • Dauerhaftes Löschen der aktuellen Version des Objekts

    Wenn Sie die aktuelle Objektversion löschen, wandeln Sie letztlich die nicht vorherige Version in die aktuelle Version dieses Objekts um.

Alle Objektversionen werden aufbewahrt, deshalb können Sie eine frühere Version zur aktuellen Version machen, indem Sie eine spezifische Version des Objekts in denselben Bucket kopieren. In der folgenden Abbildung wird das Quellobjekt (ID = 111111) in denselben Bucket kopiert. Amazon S3 stellt eine neue ID (88778877) bereit und diese wird zur aktuellen Version des Objekts. Der Bucket enthält jetzt also die ursprüngliche Objektversion (111111) und kopiert seine Kopie (88778877). Weitere Informationen zum Abrufen einer früheren Version und zum anschließenden Hochladen, um sie zur aktuellen Version zu machen, finden Sie unter Objektversionen aus einem versionsfähigen Bucket abrufen und Objekte hochladen.

Eine nachfolgende GET ruft Version 88778877 ab.

Die folgende Abbildung zeigt, wie die aktuelle Version (121212) eines Objekts gelöscht wird, sodass die vorhergehende Version (111111) zum aktuellen Objekt wird. Weitere Informationen zum Löschen eines Objekts finden Sie unter Löschen eines einzelnen Objekts.

Ein weiterer GET ruft die Version 111111 ab.

Anmerkung

Wenn Sie Objektversionen in Batches wiederherstellen möchten, können Sie die CopyObject-Operation verwenden. Die CopyObject-Operation kopiert jedes im Manifest angegebene Objekt. Objekte werden jedoch nicht zwingend in derselben Reihenfolge kopiert, in der sie im Manifest erscheinen. Wenn für versionierte Buckets die Beibehaltung der aktuellen/nicht aktuellen Versionsreihenfolge wichtig ist, sollten Sie zuerst alle nicht aktuellen Versionen kopieren. Kopieren Sie dann, nachdem der erste Auftrag abgeschlossen ist, die aktuellen Versionen in einen nachfolgenden Auftrag.

So stellen Sie frühere Objektversionen wieder her

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

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

  3. Wählen Sie in der Liste Objects (Objekte) den Namen des Objekts aus.

  4. Wählen Sie Versions (Versionen).

    Amazon S3 zeigt alle Versionen für das Objekt an.

  5. Aktivieren Sie das Kontrollkästchen neben der Version ID (Versions-ID) für die Versionen, die Sie abrufen möchten.

  6. Wählen Sie Actions (Aktionen), wählen Sie Download (Herunterladen) und speichern Sie das Objekt.

Objektversionen können auch in der Objektübersicht angezeigt, heruntergeladen und gelöscht werden. Weitere Informationen finden Sie unter Anzeigen einer Objektübersicht in der Amazon-S3-Konsole.

Wichtig

Sie können den Löschvorgang für ein Objekt nur rückgängig machen, wenn seine aktuelle Version gelöscht wurde. Es ist nicht möglich, das Löschen einer vorherigen Version eines Objekts rückgängig zu machen, das gelöscht wurde. Weitere Informationen finden Sie unter Verwenden der Versioning in S3-Buckets.

Informationen zur Verwendung anderer AWS SDKs finden Sie im AWS -Entwicklerzentrum.

Python

Anweisungen zum Erstellen und Testen eines funktionierenden Beispiels finden Sie unter Verwendung der AWS SDK for Python (Boto).

Im folgenden Python-Codebeispiel wird die vorherige Version eines versionierten Objekts wiederhergestellt, indem alle Versionen gelöscht werden, die nach der angegebenen Rollback-Version aufgetreten sind.

def rollback_object(bucket, object_key, version_id): """ Rolls back an object to an earlier version by deleting all versions that occurred after the specified rollback version. Usage is shown in the usage_demo_single_object function at the end of this module. :param bucket: The bucket that holds the object to roll back. :param object_key: The object to roll back. :param version_id: The version ID to roll back to. """ # Versions must be sorted by last_modified date because delete markers are # at the end of the list even when they are interspersed in time. versions = sorted( bucket.object_versions.filter(Prefix=object_key), key=attrgetter("last_modified"), reverse=True, ) logger.debug( "Got versions:\n%s", "\n".join( [ f"\t{version.version_id}, last modified {version.last_modified}" for version in versions ] ), ) if version_id in [ver.version_id for ver in versions]: print(f"Rolling back to version {version_id}") for version in versions: if version.version_id != version_id: version.delete() print(f"Deleted version {version.version_id}") else: break print(f"Active version is now {bucket.Object(object_key).version_id}") else: raise KeyError( f"{version_id} was not found in the list of versions for " f"{object_key}." )