Amazon Simple Storage Service
Entwicklerhandbuch (API-Version 2006-03-01)

Objekt-Versioning

Versioning ermöglicht Ihnen, mehrere Versionen eines Objekts in einem Bucket aufzubewahren. Beispielsweise können Sie my-image.jpg (Version 111111) und my-image.jpg (Version 222222) in einem einzigen Bucket speichern. Das Versioning schützt Sie vor den Folgen von unbeabsichtigtem Überschreiben oder Löschen. Zudem können Sie Objekte auch mit Versioning archivieren, sodass Sie Zugriff auf Vorgängerversionen erhalten.

Anmerkung

Die SOAP API unterstützt kein Versioning. Die SOAP-Unterstützung über HTTP ist veraltet, steht über HTTPS aber noch zur Verfügung. Neue Amazon S3-Funktionen werden unter SOAP nicht unterstützt.

Zum Anpassen Ihrer Datenaufbewahrungsmethode und zur Speicherkostenkontrolle verwenden Sie das Objekt-Versioning mit Verwaltung des Objektlebenszyklus. Informationen zum Erstellen von Lebenszyklusrichtlinien unter Verwendung der AWS Management Console finden Sie unter Eine Lebenszyklusrichtlinie für einen S3-Bucket erstellen im Konsolenbenutzerhandbuch für Amazon Simple Storage Service.

Wenn in dem nicht-versionierten Bucket eine Lebenszyklus-Richtlinie für den Ablauf von Objekten vorhanden ist und Sie dasselbe Verhalten hinsichtlich einer dauerhaften Löschung beim Aktivieren des Versionings beibehalten möchten, müssen Sie eine langfristige Ablaufrichtlinie hinzufügen. Die Lebenszyklus-Richtlinie für den langfristigen Ablauf verwaltet das Löschen der langfristigen Objektversionen im versionsfähigen Bucket. (Ein versionsfähiges Bucket behält eine kurzfristige und null oder mehr langfristige Objektversionen.)

Sie müssen das Versioning für Ihren Bucket explizit aktivieren. Das Versioning ist standardmäßig deaktiviert. Unabhängig davon, ob für den Bucket das Versioning aktiviert ist, hat jedes Objekt in Ihrem Bucket eine Versions-ID. Falls Sie kein Versioning aktiviert haben, setzt Amazon S3 den Wert der Versions-ID auf null. Falls Sie das Versioning für den Bucket aktiviert haben, weist Amazon S3 eine eindeutige Versions-ID für das Objekt zu. Wenn Sie das Versioning für einen Bucket aktiviert haben, werden bereits im Bucket gespeicherte Objekte nicht geändert. Die Version-IDs (null), Inhalte und Berechtigungen bleiben unverändert.

Die Aktivierung und das Aussetzen des Versionings erfolgt auf Bucket-Ebene. Wenn Sie das Versioning für einen Bucket aktivieren, erhalten alle Objekte, die ihm hinzugefügt werden, eine eindeutige Versions-ID. Eindeutige Versions-IDs sind zufällig generierte, UTF-8-codierte, URL-fähige sichtbare Unicode-Zeichenfolgen, die höchsten 1024 Bytes lang sind. Ein Beispiel für eine Versions-ID ist 3/L4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo. Nur Amazon S3 generiert Versions-IDs. Sie können nicht bearbeitet werden.

Anmerkung

Der Einfachheit halber verwenden wir in allen unseren Beispielen sehr viel kürzere IDs.

Wenn Sie mit PUT ein Objekt in einen Bucket mit aktiviertem Versioning schreiben, wird die nicht aktuelle Version nicht überschrieben. Die folgende Abbildung zeigt, dass dann, wenn eine neue Version von photo.gif mit PUT in einen Bucket geschrieben wird, der bereits ein Objekt desselben Namens enthält, das ursprüngliche Objekt (ID = 111111) im Bucket bleibt und Amazon S3 eine neue Versions-ID erzeugt (121212) und die neuere Version in den Bucket einfügt.

Diese Funktion verhindert, dass Objekte versehentlich gelöscht oder überschrieben werden, und bietet Ihnen die Möglichkeit, eine frühere Version eines Objekts abzurufen.

Wenn Sie DELETE für ein Objekt ausführen, bleiben alle Versionen in dem Bucket, und Amazon S3 fügt eine Löschmarkierung ein, wie in der folgenden Abbildung gezeigt.

Die Löschmarkierung wird zur aktuellen Version des Objekts. Standardmäßig wird durch GET-Anforderungen die zuletzt gespeicherte Version abgerufen. Eine einfache GET Object-Anforderung gibt einen 403 Forbidden-Fehler zurück, wenn die aktuelle Version eine Löschmarkierung ist, wie in der folgenden Abbildung gezeigt.

Sie können jedoch mit GET eine nicht aktuelle Version eines Objekts abrufen, indem Sie ihre Versions-ID angeben. In der folgenden Abbildung wird GET für eine spezifische Objektversion, 111111, durchgeführt. Amazon S3 gibt diese Objektversion aus, obwohl es sich nicht um die aktuelle Version handelt.

Sie können ein Objekt permanent löschen, indem Sie die Version angeben, die Sie löschen wollen. Nur der Eigentümer eines Amazon S3-Buckets kann eine Version dauerhaft löschen. Die folgende Abbildung zeigt, wie DELETE versionId ein Objekt dauerhaft aus einem Bucket löscht, und dass Amazon S3 keine Löschmarkierung einfügt.

Sie können mehr Sicherheit erreichen, indem Sie einen Bucket mit aktiviertem MFA (Multi-Factor Authentication) Delete konfigurieren. In diesem Fall muss der Bucket-Eigentümer zwei Authentifizierungsformen in jede Anforderung aufnehmen, um eine Version zu löschen oder den Versioning-Status des Buckets zu ändern. Weitere Informationen finden Sie unter MFA Delete.

Wichtig

Wenn Sie eine deutliche Zunahme von HTTP 503-Verlangsamungsantworten feststellen, die für Amazon S3 PUT- oder DELETE-ObjektAnforderungen an einen Bucket mit aktiviertem Versioning eingehen, befindet sich möglicherweise ein oder mehrere Objekte im Bucket, für die Millionen von Versionen vorhanden sind. Weitere Informationen finden Sie unter Amazon S3-Fehlerbehebung.

Weitere Informationen finden Sie unter Verwendung von Versioning.