Wie führt man bedingte Löschungen durch - 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.

Wie führt man bedingte Löschungen durch

Sie können bedingte Löschungen verwenden, um zu überprüfen, ob Ihr Objekt existiert oder unverändert ist, bevor Sie es löschen. Sie können bedingte Löschungen mithilfe der DeleteObjects API-Operationen DeleteObject oder in S3-Buckets für allgemeine Zwecke und Verzeichnisse durchführen. Wenn Sie eine bedingte Löschanforderung stellen, können Sie zunächst den HTTP If-Match Header mit dem Wert der Vorbedingung verwenden, * um zu überprüfen, ob das Objekt existiert, oder den If-Match Header mit dem von Ihnen bereitgestellten Header, ETag um zu überprüfen, ob das Objekt geändert wurde.

Sie können bedingte Löschungen auf Allzweck-Bucket-Ebene mithilfe von S3-Bucket- oder Identity and Access Management (IAM) -Richtlinien erzwingen. Weitere Informationen finden Sie unter Bedingte Löschungen für Amazon S3 S3-Buckets erzwingen.

Anmerkung

Evaluierungen zum bedingten Löschen gelten nur für die aktuelle Version des Objekts.

Wie können Sie überprüfen, ob Ihr Objekt geändert wurde, bevor Sie es löschen

Mit bedingten Löschungen können Sie Ihre Anwendung vor dem versehentlichen Löschen von Objekten schützen. Sie können den HTTP If-Match Header mit dem ETag Wert verwenden, um zu überprüfen, ob ein Objekt geändert wurde. Wenn der ETag Wert eines Objekts in einem S3-Bucket nicht mit dem Wert übereinstimmtETag, den Sie während des Löschvorgangs angegeben haben, schlägt der Vorgang fehl. Um mehrere Objekte mithilfe des DeleteObjects Vorgangs bedingt zu löschen, müssen Sie den ETag Wert im ETag Element des Objekts im Hauptteil der XML-Anfrage angeben. Weitere Informationen finden Sie unter Verwenden Sie Content- MD5 und the, um hochgeladene ETag Objekte zu verifizieren.

Anmerkung

Um bedingte Löschungen mit dem If-Match Header mit dem ETag Wert durchzuführen, benötigen Sie die Berechtigungen s3:DeleteObject unds3:GetObject.

Der If-Match Header mit dem ETag Wert wird anhand vorhandener Objekte in einem Bucket ausgewertet. Wenn es ein Objekt mit demselben Schlüsselnamen und derselben Übereinstimmung gibtETag, sind die DeleteObject Anfragen erfolgreich und es wird eine 204 No content Antwort zurückgegeben. Wenn das ETag nicht übereinstimmt, schlägt der Löschvorgang mit einer 412 Precondition Failed Antwort fehl. Bei Erfolg antwortet die DeleteObjects API mit einem 200 OK und gibt den Status jedes Objekts im Antworttext der Batch-Löschanfrage an. Wenn die Vorbedingungen für eine DeleteObjects Anfrage nicht erfüllt sind, löscht Amazon S3 die Objekte und gibt eine Pre-condition fehlgeschlagene Fehlerantwort zurück.

Sie können auch bei gleichzeitigen Anfragen eine 409 Conflict Fehlerantwort erhalten, wenn eine PUT Oder-Anfrage an ein DELETE Objekt erfolgreich ist, bevor ein bedingter Löschvorgang für dieses Objekt abgeschlossen ist. Sie erhalten eine 404 Not Found-Antwort, wenn eine gleichzeitige Löschanforderung für ein Objekt erfolgreich ist, bevor ein bedingter Schreibvorgang für dieses Objekt abgeschlossen ist, da der Objektschlüssel nicht mehr existiert.

Sie können den If-Match Header mit dem ETag Wert für Folgendes verwenden: APIs

Der folgende delete-object Beispielbefehl versucht, ein bedingtes Löschen mit dem angegebenen ETag Wert durchzuführen6805f2cfc46c0f04559748bb039d69al.

aws s3api delete-object --bucket amzn-s3-demo-bucket --key dir-1/my_images.tar.bz2 --if-match "6805f2cfc46c0f04559748bb039d69al"

Weitere Informationen finden Sie unter delete-object in der Referenz zum AWS CLI -Befehl.

Mit dem folgenden delete-objects Beispielbefehl wird versucht, ein bedingtes Löschen mit dem angegebenen ETag Wert durchzuführen6805f2cfc46c0f04559748bb039d69al.

aws s3api delete-objects --bucket amzn-s3-demo-bucket --delete '{"Objects":[{"Key":"my_images.tar.bz2", "ETag": "6805f2cfc46c0f04559748bb039d69al"}]}'

Weitere Informationen finden Sie unter delete-objects in der Referenz zum AWS CLI -Befehl.

Weitere Informationen zu finden Sie unter Was ist der AWS Command Line Interface? AWS CLI im AWS Command Line Interface Benutzerhandbuch.

Wie können Sie überprüfen, ob Ihr Objekt existiert, bevor Sie es löschen

Sie können den If-Match Header mit dem * Wert verwenden, um zu überprüfen, ob das Objekt existiert, bevor Sie versuchen, es zu löschen. Der * Wert bedeutet, dass der Vorgang nur fortgesetzt werden soll, wenn das Objekt existiert, unabhängig davon, ob es geändert wurde oder nicht.

Löschmarkierungen sind spezielle Objekte in versionierten S3-Allzweck-Buckets, die darauf hinweisen, dass ein Objekt gelöscht wurde. Sie sind Platzhalter, die das Objekt als gelöscht erscheinen lassen, während die vorherigen Versionen erhalten bleiben. Wenn Sie eine DeleteObject API verwendenIf-Match:*, ist der Vorgang daher nur dann erfolgreich, 204 No Content wenn das Objekt vorhanden ist. Wenn es sich bei der neuesten Version des Objekts um eine Löschmarkierung handelt, ist das Objekt nicht vorhanden und die DeleteObject API schlägt fehl und gibt eine 412 Precondition Failed Antwort zurück. Weitere Informationen zu Löschmarkierungen finden Sie unter Arbeiten mit Löschmarkierungen.

Um mehrere Objekte mithilfe der DeleteObjects Operation bedingt zu löschen, können Sie das * im ETag Element des Objekts im Hauptteil der XML-Anfrage angeben. Wenn die Vorbedingung erfolgreich ist, antwortet der DeleteObjects Vorgang mit einem 200 OK und gibt den Status jedes Objekts im Antworttext an. Wenn die Vorbedingung erfolgreich ist, wird die Antwort für dieses Objekt im <Deleted> Element des Antworttextes erfasst. Wenn die Vorbedingung fehlschlägt, wird die Antwort für dieses Objekt im <Error> Element des Antworttextes erfasst. Wenn das Objekt bei der Auswertung einer der Vorbedingungen nicht existiert, lehnt S3 die Anfrage ab und gibt eine Not Found Fehlerantwort zurück.

Anmerkung

Um bedingte Löschungen mit durchführen zu könnenIf-Match:*, benötigen Sie die entsprechenden Berechtigungen. s3:DeleteObject

Sie können den If-Match Header mit dem * Wert für Folgendes APIs verwenden:

Mit dem folgenden delete-object Beispielbefehl wird versucht, ein bedingtes Löschen für ein Objekt durchzuführenmy_images.tar.bz2, * dessen Schlüsselname einen beliebigen Wert hat ETag.

aws s3api delete-object --bucket amzn-s3-demo-bucket --key dir-1/my_images.tar.bz2 --if-match "*"

Weitere Informationen finden Sie unter delete-object in der Referenz zum AWS CLI -Befehl.

Mit dem folgenden delete-objects Beispielbefehl wird versucht, ein bedingtes Löschen für ein Objekt durchzuführenmy_images.tar.bz2, * dessen Schlüsselname einen beliebigen Wert hat ETag.

aws s3api delete-objects --bucket amzn-s3-demo-bucket --delete '{"Objects":[{"Key":"my_images.tar.bz2", "ETag": "*"}]}'

Weitere Informationen finden Sie unter delete-objects in der Referenz zum AWS CLI -Befehl.

Weitere Informationen zu finden Sie unter Was ist der AWS Command Line Interface? AWS CLI im AWS Command Line Interface Benutzerhandbuch.