

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.

# Hinzufügen von Vorbedingungen zu S3-Vorgängen mit bedingten Anforderungen
<a name="conditional-requests"></a>

Sie können bedingte Anforderungen verwenden, um Ihren S3-Vorgängen Vorbedingungen hinzuzufügen. Um bedingte Anfragen zu verwenden, fügen Sie Ihrer Amazon-S3-API-Operation einen zusätzlichen Header hinzu. Dieser Header spezifiziert eine Bedingung, die, wenn sie nicht erfüllt wird, dazu führt, dass der S3-Vorgang fehlschlägt.

Bedingte Lesevorgänge werden für `GET`-, `HEAD`- und `COPY`-Anforderungen unterstützt. Sie können Vorbedingungen hinzufügen, um ein Objekt auf der Grundlage seines Entitäts-Tags (ETag) oder des Datums der letzten Änderung zurückzugeben oder zu kopieren. Dadurch kann eine S3-Operation auf Objekte beschränkt werden, die seit einem bestimmten Datum aktualisiert wurden. Sie können einen S3-Vorgang auch auf einen bestimmten ETag Wert beschränken. Dadurch könnte sichergestellt werden, dass Sie nur eine bestimmte Objektversion zurückgeben oder kopieren. Weitere Informationen zu Objekt-Metadaten erhalten Sie unter [Arbeiten mit Objekt-Metadaten](UsingMetadata.md).

Durch bedingte Schreibvorgänge kann sichergestellt werden, dass während des `PUT`-Betriebs kein Objekt mit demselben Schlüsselnamen in Ihrem Bucket vorhanden ist. Dadurch wird verhindert, dass vorhandene Objekte mit identischen Schlüsselnamen überschrieben werden. In ähnlicher Weise können Sie bedingte Schreibvorgänge verwenden, um zu überprüfen, ob der Wert eines Objekts unverändert ETag ist, bevor Sie das Objekt aktualisieren. Dadurch wird verhindert, dass ein Objekt unbeabsichtigt überschrieben wird, ohne den Status seines Inhalts zu kennen. Sie können bedingte Schreibvorgänge für [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html), oder [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)Anfragen verwenden. Weitere Informationen zu Schlüsselnamen finden Sie unter [Markieren von Amazon-S3-Objekten](object-keys.md).

Bei bedingten Löschungen wird vor dem Löschen geprüft, ob das Objekt existiert oder unverändert ist. Sie können bedingte Löschungen mit den Buckets `DeleteObject` oder `DeleteObjects` APIs in den Verzeichnis-Buckets für allgemeine Zwecke und Verzeichnisse durchführen. Weitere Informationen über bedingte Löschungen finden Sie unter [So führen Sie bedingte Löschungen durch](conditional-deletes.md). Für bedingte Lese-, Schreib- oder Löschvorgänge fallen keine zusätzlichen Kosten an. Ihnen werden nur die bestehenden Tarife für die anfallenden Anfragen berechnet, auch für fehlgeschlagene Anfragen. Informationen zu den Funktionen und Preisen von Amazon S3 finden Sie unter [Amazon-S3-Preise](https://aws.amazon.com/s3/pricing).

**Topics**
+ [So rufen Sie Objekte auf der Grundlage von Metadaten mit bedingten Lesevorgängen ab oder kopieren sie](conditional-reads.md)
+ [So verhindern Sie Objektüberschreibungen durch bedingte Schreibvorgänge](conditional-writes.md)
+ [So führen Sie bedingte Löschungen durch](conditional-deletes.md)

# So rufen Sie Objekte auf der Grundlage von Metadaten mit bedingten Lesevorgängen ab oder kopieren sie
<a name="conditional-reads"></a>

Bei bedingten Lesevorgängen können Sie Ihrer Leseanforderung einen zusätzlichen Header hinzufügen, um Ihrem S3-Vorgang Vorbedingungen hinzuzufügen. Wenn diese Voraussetzungen nicht erfüllt sind, schlägt die Leseanforderung fehl.

Sie können bedingte Lesevorgänge für `GET`-, `HEAD`- oder `COPY`-Anforderungen verwenden, um ein Objekt nur auf der Grundlage seiner Metadaten zurückzugeben.

Wenn Sie ein Objekt hochladen, erstellt Amazon S3 systemgesteuerte Metadaten, die nur von S3 geändert werden können. Entity Tags (ETags) und Last-Modified sind Beispiele für systemgesteuerte Metadaten. Bei einem Objekt ETag handelt es sich um eine Zeichenfolge, die eine bestimmte Version eines Objekts darstellt. Das letzte Änderungsdatum steht für Metadaten, die das Erstellungsdatum eines Objekts oder das zuletzt geänderte Datum darstellen, je nachdem, welches neuer ist.

Mit bedingten Lesevorgängen können Sie ein Objekt basierend auf dem Datum der letzten Änderung ETag oder dem Datum der letzten Änderung zurückgeben. Sie können in Ihrer Anfrage einen ETag Wert angeben und das Objekt nur zurückgeben, wenn der ETag Wert übereinstimmt. Dadurch wird sichergestellt, dass Sie nur eine bestimmte Version eines Objekts zurückgeben oder kopieren. Sie können in Ihrer Leseanforderung den Wert „Letzte Änderung“ angeben und ein Objekt nur zurückgeben, wenn dieses Objekt seit einem von Ihnen angegebenen Datum geändert wurde. 

## Unterstützt APIs
<a name="conditional-read-apis"></a>

Die folgende APIs S3-Unterstützung mit bedingten Lesevorgängen:
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)

Sie können die folgenden Header verwenden, um ein Objekt zurückzugeben, das vom Entity-Tag (ETag) oder dem Datum der letzten Änderung abhängig ist. Weitere Hinweise zu Objektmetadaten wie ETags Last-Modified finden Sie unter. [Systemdefinierte Objektmetadaten](UsingMetadata.md#SysMetadata)

**[https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)**  

+ `If-Match`— Gibt das Objekt nur zurück, wenn es ETag mit dem angegebenen übereinstimmt. 
+ `If-Modified-Since` – Gibt das Objekt nur zurück, wenn es seit dem angegebenen Zeitpunkt geändert wurde.
+ `If-None-Match`— Gibt das Objekt nur zurück, wenn ETag es nicht mit dem angegebenen übereinstimmt.
+ `If-Unmodified-Since` – Gibt das Objekt nur zurück, wenn es seit dem angegebenen Zeitpunkt nicht geändert wurde.

Weitere Informationen zu diesen Headern, den zurückgegebenen Fehlern und der Reihenfolge, in der S3 mehrere bedingte Header in einer einzigen Anforderung verarbeitet, finden Sie unter [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) in der API-Referenz zum Amazon Simple Storage Service.

**[https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)**  

+ `If-Match`— Gibt das Objekt nur zurück, wenn es ETag mit dem angegebenen übereinstimmt. 
+ `If-Modified-Since` – Gibt das Objekt nur zurück, wenn es seit dem angegebenen Zeitpunkt geändert wurde.
+ `If-None-Match`— Gibt das Objekt nur zurück, wenn ETag es nicht mit dem angegebenen übereinstimmt.
+ `If-Unmodified-Since` – Gibt das Objekt nur zurück, wenn es seit dem angegebenen Zeitpunkt nicht geändert wurde.

Weitere Informationen zu diesen Headern, den zurückgegebenen Fehlern und der Reihenfolge, in der S3 mehrere bedingte Header in einer einzigen Anforderung verarbeitet, finden Sie unter [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html) in der API-Referenz zum Amazon Simple Storage Service.

**[https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)**  

+ `x-amz-copy-source-if-match`— Kopiert das Quellobjekt nur, wenn es ETag mit dem angegebenen übereinstimmt. 
+ `x-amz-copy-source-if-modified-since` – Kopiert das Quellobjekt nur, wenn es seit dem angegebenen Zeitpunkt geändert wurde.
+ `x-amz-copy-source-if-none-match`— Kopiert das Quellobjekt nur, wenn ETag es nicht mit dem angegebenen übereinstimmt.
+ `x-amz-copy-source-if-unmodified-since` – Kopiert das Quellobjekt nur, wenn es seit dem angegebenen Zeitpunkt nicht geändert wurde.
+ `If-Match`— Kopiert das Objekt nur, wenn es ETag mit dem angegebenen übereinstimmt. `If-Match`erwartet den ETag Wert als Zeichenfolge.
+ `If-None-Match`— Kopiert das Objekt nur, wenn ETag es nicht mit dem angegebenen übereinstimmt. `If-None-Match`erwartet das Zeichen '\$1' (Sternchen).

Weitere Informationen zu diesen Headern, den zurückgegebenen Fehlern und der Reihenfolge, in der S3 mehrere bedingte Header in einer einzigen Anforderung verarbeitet, finden Sie unter [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) in der API-Referenz zum Amazon Simple Storage Service.

# So verhindern Sie Objektüberschreibungen durch bedingte Schreibvorgänge
<a name="conditional-writes"></a>

Durch die Verwendung von bedingten Schreibvorgängen können Sie Ihren `WRITE`-Anforderungen einen zusätzlichen Header hinzufügen, um die Vorbedingungen für Ihre Amazon-S3-Operation festzulegen. Um Objekte bedingt zu schreiben, fügen Sie den `If-None-Match`-HTTP- oder `If-Match`-Header hinzu.

Der `If-None-Match`-Header verhindert das Überschreiben vorhandener Daten, indem er überprüft, ob sich nicht bereits ein Objekt mit demselben Schlüsselnamen in Ihrem Bucket befindet.

Alternativ können Sie den `If-Match` Header hinzufügen, um das Entity-Tag (ETag) eines Objekts zu überprüfen, bevor Sie ein Objekt schreiben. Mit diesem Header vergleicht Amazon S3 den bereitgestellten ETag Wert mit dem ETag Wert des Objekts in S3. Wenn die ETag Werte nicht übereinstimmen, schlägt der Vorgang fehl.

Bucket-Eigentümer können Bucket-Richtlinien verwenden, um bedingte Schreibvorgänge für hochgeladene Objekte zu erzwingen. Weitere Informationen finden Sie unter [Erzwingen bedingter Schreibvorgänge in Amazon-S3-Buckets](conditional-writes-enforce.md).

**Anmerkung**  
Um bedingte Schreibvorgänge verwenden zu können, müssen Sie AWS Signature Version 4 verwenden, um die Anforderung zu signieren.

**Topics**
+ [So verhindern Sie Objektüberschreibungen auf der Grundlage von Schlüsselnamen](#conditional-write-key-names)
+ [So verhindern Sie Überschreibungen, wenn sich das Objekt geändert hat](#conditional-write-etags)
+ [Bedingtes Schreibverhalten](#conditional-error-response)
+ [Bedingte Schreibszenarien](#conditional-write-scenarios)
+ [Erzwingen bedingter Schreibvorgänge in Amazon-S3-Buckets](conditional-writes-enforce.md)

## So verhindern Sie Objektüberschreibungen auf der Grundlage von Schlüsselnamen
<a name="conditional-write-key-names"></a>

Sie können den `If-None-Match` bedingten HTTP-Header verwenden, um anhand seines Schlüsselnamens zu überprüfen, ob ein Objekt bereits im angegebenen Bucket vorhanden ist, bevor Sie es erstellen oder in den Ziel-Bucket kopieren.

Bedingte Schreibvorgänge mit dem `If-None-Match`-HTTP-Header prüfen während des `WRITE`-Vorgangs, ob ein Objekt vorhanden ist. Wenn im Bucket ein identischer Schlüsselname gefunden wird, schlägt der Vorgang fehl. Ohne den `If-None-Match` HTTP-Header wird das Objekt überschrieben, wenn Sie ein Objekt mit einem identischen Schlüsselnamen in einen Bucket ohne Version hochladen oder kopieren, dessen Version gesperrt wurde. Weitere Informationen über das Verwenden von Schlüsselnamen finden Sie unter [Markieren von Amazon-S3-Objekten](object-keys.md).

**Anmerkung**  
Der `If-None-Match` HTTP-Header gilt nur für die aktuelle Version eines Objekts in einem Versions-Bucket.

Um bedingte Schreibvorgänge mit dem `If-None-Match`-HTTP-Header durchzuführen, benötigen Sie die entsprechende `s3:PutObject`-Berechtigung. Dadurch kann der Aufrufer überprüfen, ob Objekte im Bucket vorhanden sind. Der `If-None-Match`-Header erwartet den \$1-Wert (Sternchen).

Sie können den `If-None-Match` Header wie folgt verwenden APIs:
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)

### Bedingtes Einfügen mit dem AWS CLI
<a name="conditional-writes-putobject-CLI-key-names"></a>

Der folgende Beispielbefehl `put-object` versucht, einen bedingten Schreibvorgang für ein Objekt mit dem Schlüsselnamen `dir-1/my_images.tar.bz2` durchzuführen.

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

Weitere Informationen finden Sie unter [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-object.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-object.html) in der Referenz zum *AWS CLI -Befehl*.

Informationen zu dem AWS CLI finden Sie unter [Was ist der AWS Command Line Interface?](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) im *AWS Command Line Interface Benutzerhandbuch*. 

### Bedingtes Kopieren mit dem AWS CLI
<a name="conditional-writes-copyobject-CLI-key-names"></a>

Der folgende `copy-object` Beispielbefehl versucht, ein Objekt mit einem bedingten Schreibvorgang für ein Objekt mit dem Schlüsselnamen in einen Ziel-Bucket zu kopieren`dir-1/my_images.tar.bz2`.

```
aws s3api copy-object --copy-source amzn-s3-demo-bucket/key --key dir-1/my_images.tar.bz2 --bucket amzn-s3-demo-bucket2 --if-none-match "*"            
```

Weitere Informationen finden Sie unter [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/copy-object.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/copy-object.html) in der Referenz zum *AWS CLI -Befehl*.

Weitere Informationen zu finden Sie unter [Was ist der AWS Command Line Interface? AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) im *AWS Command Line Interface Benutzerhandbuch*. 

### Bedingter mehrteiliger Upload Mit dem AWS CLI
<a name="conditional-writes-mpu-complete-CLI-key-names"></a>

Mit dem folgenden `complete-multipart-upload` Beispielbefehl wird versucht, einen mehrteiligen Upload mit einem bedingten Schreibvorgang für ein Objekt mit dem Schlüsselnamen abzuschließen. `dir-1/my_images.tar.bz2` In diesem Beispiel wird das Präfix file://verwendet, um die JSON-Struktur aus einer Datei im lokalen Ordner mit `mpustruct` dem Namen Liste aller Teile zu laden, die für diesen speziellen mehrteiligen Upload hochgeladen wurden.

```
aws s3api complete-multipart-upload --multipart-upload file://mpustruct --bucket amzn-s3-demo-bucket --key dir-1/my_images.tar.bz2 --upload-id upload-id  --if-none-match "*"             
```

Weitere Informationen finden Sie unter [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/complete-multipart-upload.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/complete-multipart-upload.html) in der Referenz zum *AWS CLI -Befehl*.

Weitere Informationen zu finden Sie AWS CLI unter [Was ist der AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)? im *AWS Command Line Interface Benutzerhandbuch*. 

## So verhindern Sie Überschreibungen, wenn sich das Objekt geändert hat
<a name="conditional-write-etags"></a>

Bei einem Objekt ETag handelt es sich um eine Zeichenfolge, die für das Objekt eindeutig ist und eine Änderung am Inhalt des Objekts widerspiegelt. Sie können den `If-Match` Header verwenden, um den ETag Wert eines Objekts in einem Amazon S3 S3-Bucket mit einem Objekt zu vergleichen, das Sie während des `WRITE` Vorgangs angeben. Wenn die ETag Werte nicht übereinstimmen, schlägt der Vorgang fehl. Weitere Hinweise zu finden ETags Sie unter[Verwenden Sie Content- MD5 und the, um hochgeladene ETag Objekte zu verifizieren](checking-object-integrity-upload.md#checking-object-integrity-etag-and-md5).

Um bedingte Schreibvorgänge mit einem `If-Match`-HTTP-Header durchzuführen, benötigen Sie die Berechtigungen `s3:GetObject` und `s3:PutObject`. Dadurch kann der Aufrufer den Zustand der Objekte im Bucket überprüfen ETag und deren Status verifizieren. Der `If-Match` Header erwartet den ETag Wert als Zeichenfolge.

Sie können den `If-Match` Header wie folgt verwenden APIs:
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)

### Bedingtes Einfügen mit dem AWS CLI
<a name="conditional-writes-putobject-CLI-etags"></a>

Der folgende `put-object` Beispielbefehl versucht, einen bedingten Schreibvorgang mit dem angegebenen ETag Wert durchzuführen`6805f2cfc46c0f04559748bb039d69ae`.

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key dir-1/my_images.tar.bz2 --body my_images.tar.bz2 --if-match "6805f2cfc46c0f04559748bb039d69ae"         
```

Weitere Informationen finden Sie unter [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-object.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-object.html) in der Referenz zum *AWS CLI -Befehl*.

Weitere Informationen zu finden Sie unter [Was ist der AWS Command Line Interface? AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) im *AWS Command Line Interface Benutzerhandbuch*. 

### Bedingtes Kopieren mit dem AWS CLI
<a name="conditional-writes-copyobject-CLI-etags"></a>

Der folgende `copy-object` Beispielbefehl versucht, einen bedingten Schreibvorgang mit dem angegebenen ETag Wert durchzuführen`6805f2cfc46c0f04559748bb039d69ae`.

```
aws s3api copy-object --copy-source amzn-s3-demo-bucket/key --key dir-1/my_images.tar.bz2 --bucket amzn-s3-demo-bucket2 --if-match "6805f2cfc46c0f04559748bb039d69ae"             
```

Weitere Informationen finden Sie unter [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/copy-object.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/copy-object.html) in der Referenz zum *AWS CLI -Befehl*.

Weitere Informationen zu finden Sie unter [Was ist der AWS Command Line Interface? AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) im *AWS Command Line Interface Benutzerhandbuch*. 

### Bedingter mehrteiliger Upload Mit dem AWS CLI
<a name="conditional-writes-mpu-complete-CLI-etags"></a>

Der folgende `complete-multipart-upload` Beispielbefehl versucht, einen mehrteiligen Upload mit einem bedingten Schreibvorgang unter Verwendung des angegebenen ETag Werts abzuschließen. `6805f2cfc46c0f04559748bb039d69ae` In diesem Beispiel wird das Präfix file://verwendet, um die JSON-Struktur aus einer Datei im lokalen Ordner mit `mpustruct` dem Namen Liste aller Teile zu laden, die für diesen speziellen mehrteiligen Upload hochgeladen wurden.

```
aws s3api complete-multipart-upload --multipart-upload file://mpustruct --bucket amzn-s3-demo-bucket --key dir-1/my_images.tar.bz2 --upload-id upload-id --if-match "6805f2cfc46c0f04559748bb039d69ae"             
```

Weitere Informationen finden Sie unter [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/complete-multipart-upload.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/complete-multipart-upload.html) in der Referenz zum *AWS CLI -Befehl*.

Weitere Informationen zu finden Sie AWS CLI unter [Was ist der AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)? im *AWS Command Line Interface Benutzerhandbuch*. 

## Bedingtes Schreibverhalten
<a name="conditional-error-response"></a>

**Bedingte Schreibvorgänge oder Kopien mit Header `If-None-Match`**  
Bedingte Schreibvorgänge mit dem `If-None-Match`-Header werden anhand vorhandener Objekte in einem Bucket ausgewertet. Wenn im Bucket kein Objekt mit demselben Schlüsselnamen vorhanden ist, ist der Schreibvorgang erfolgreich, was zu einer `200 OK`-Antwort führt. Wenn ein Objekt vorhanden ist, schlägt der Schreibvorgang fehl, was zu einer `412 Precondition Failed`-Antwort führt.  
Bei Buckets mit aktivierter Versionsverwaltung ist der Schreibvorgang erfolgreich, wenn es keine aktuelle Objektversion mit demselben Namen gibt oder wenn es sich bei der aktuellen Objektversion um eine Löschmarkierung handelt. Andernfalls führt dies zu einem fehlgeschlagenen Schreibvorgang mit einer `412 Precondition Failed`-Antwort.  
Wenn mehrere bedingte Schreibvorgänge oder Kopien für denselben Objektnamen erfolgen, ist der erste abgeschlossene Schreibvorgang erfolgreich. In Amazon S3 schlagen dann nachfolgende Schreibvorgänge mit einer `412 Precondition Failed`-Antwort fehl.  
Sie können auch bei gleichzeitigen Anforderungen eine `409 Conflict`-Antwort erhalten, wenn eine Löschanforderung für ein Objekt erfolgreich ist, bevor ein bedingter Schreibvorgang für dieses Objekt abgeschlossen ist. Wenn Sie bedingte Schreibvorgänge mit `PutObject` verwenden, werden Uploads möglicherweise erneut versucht, nachdem ein `409 Conflict`-Fehler aufgetreten ist. Wenn Sie `CompleteMultipartUpload` verwenden, muss der gesamte mehrteilige Upload mit `CreateMultipartUpload` erneut initiiert werden, um das Objekt nach Erhalt eines `409 Conflict`-Fehlers wieder hochzuladen.

**Bedingte Schreibvorgänge oder Kopien mit Header `If-Match`**  
Der `If-Match`-Header wird anhand vorhandener Objekte in einem Bucket ausgewertet. Wenn es ein Objekt mit demselben Schlüsselnamen und derselben Übereinstimmung gibt ETag, ist der Schreibvorgang erfolgreich, was zu einer `200 OK` Antwort führt. Wenn das ETag nicht übereinstimmt, schlägt der Schreibvorgang mit einer `412 Precondition Failed` Antwort fehl.  
Sie können auch bei gleichzeitigen Anforderungen eine `409 Conflict`-Antwort erhalten.  
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 sollten das Objekt erneut hochladen, wenn Sie eine `404 Not Found`-Antwort erhalten.  
Wenn es keine aktuelle Objektversion mit demselben Namen gibt oder wenn es sich bei der aktuellen Objektversion um eine Löschmarkierung handelt, schlägt der Vorgang mit einem `404 Not Found`-Fehler fehl.

## Bedingte Schreibszenarien
<a name="conditional-write-scenarios"></a>

Berücksichtigen Sie die folgenden Szenarien, in denen zwei Clients Operationen auf demselben Bucket ausführen. 

**Bedingte Schreibvorgänge bei mehrteiligen Uploads**  
Bedingte Schreibvorgänge berücksichtigen keine laufenden Anforderungen für mehrteilige Uploads, da es sich bei diesen um noch nicht vollständig geschriebene Objekte handelt. Sehen Sie sich das folgende Beispiel an, in dem Client 1 ein Objekt mithilfe eines mehrteiligen Uploads hochlädt. Während des mehrteiligen Uploads kann Client 2 dasselbe Objekt mit dem bedingten Schreibvorgang erfolgreich schreiben. Wenn Client 1 anschließend versucht, den mehrteiligen Upload mithilfe eines bedingten Schreibvorgangs abzuschließen, schlägt der Upload fehl.

**Anmerkung**  
Dieses Szenario führt zu einer `412 Precondition Failed`-Antwort sowohl für `If-None-Match`- als auch für `If-Match`-Header.

![\[Ein Beispiel für zwei Clients, die Elemente mit demselben Schlüsselnamen schreiben. Eine mit UploadPart für MPU und eine mit PutObject einem bedingten Schreibvorgang. Die CompleteMultipartUpload Operation, die danach beginnt, schlägt fehl.\]](http://docs.aws.amazon.com/de_de/AmazonS3/latest/userguide/images/conwrite_put_mpu.png)


**Gleichzeitiges Löschen bei mehrteiligen Uploads**  
Wenn eine Löschanforderung erfolgreich ist, bevor eine bedingte Schreibanforderung abgeschlossen werden kann, gibt Amazon S3 eine `409 Conflict`- oder `404 Not Found`-Antwort für den Schreibvorgang zurück. Das liegt daran, dass die zuvor initiierte Löschanforderung Vorrang vor dem bedingten Schreibvorgang hat. In solchen Fällen müssen Sie einen neuen mehrteiligen Upload initiieren.

**Anmerkung**  
Dieses Szenario führt zu einer `409 Conflict`-Antwort für einen `If-None-Match`-Header und einer `404 Not Found`-Antwort für einen `If-Match`-Header.

![\[Ein Beispiel für zwei Clients, von denen einer den mehrteiligen Upload verwendet und der andere nach dem Start des MPU eine Löschanforderung sendet. Die Löschanforderung wird beendet, bevor der bedingte Schreibvorgang beginnt.\]](http://docs.aws.amazon.com/de_de/AmazonS3/latest/userguide/images/conwrite_delete_mpu.png)


**Anmerkung**  
Wir empfehlen, eine Lebenszyklusregel zu konfigurieren, durch die unvollständige mehrteilige Uploads nach einer bestimmten Anzahl von Tagen mit der Aktion `AbortIncompleteMultipartUpload` gelöscht werden, um Ihre Speicherkosten gering zu halten. Weitere Informationen zum Erstellen einer Lebenszyklusregel zum Löschen unvollständiger mehrteiliger Uploads finden Sie unter [Konfigurieren einer Bucket-Lebenszykluskonfiguration zum Löschen unvollständiger mehrteiliger Uploads](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpu-abort-incomplete-mpu-lifecycle-config.html).

# Erzwingen bedingter Schreibvorgänge in Amazon-S3-Buckets
<a name="conditional-writes-enforce"></a>

Mithilfe der Amazon-S3-Bucket-Richtlinien können Sie bedingte Schreibvorgänge für Objekt-Uploads in Ihren Allzweck-Buckets erzwingen.

Eine Bucket-Richtlinie ist eine auf Ressourcen basierende Richtlinie, die Sie verwenden können, um Zugriffsberechtigungen für Ihren Amazon-S3-Bucket und die darin enthaltenen Objekte zu erteilen. Nur der Bucket-Eigentümer kann einem Bucket eine Richtlinie zuordnen. Weitere Informationen zu Bucket-Richtlinien finden Sie unter [Bucket-Richtlinien für Amazon S3](bucket-policies.md).

Sie können die Bedingungsschlüssel `s3:if-match` oder `s3:if-none-match` als optionales `Condition`-Element oder `Condition`-Block verwenden, um anzugeben, wann eine Richtlinie wirksam ist. Bei mehrteiligen Uploads müssen Sie den `s3:ObjectCreationOperation` Bedingungsschlüssel angeben, um die `UploadPartCopy` Operationen `CreateMultipartUpload``UploadPart`, und auszuschließen, da diese APIs keine bedingten Header akzeptieren. Weitere Informationen über die Verwendung von Bedingungen in Bucket-Richtlinien finden Sie unter [Beispiele für Bucket-Richtlinien mit Bedingungsschlüsseln](amazon-s3-policy-keys.md).

**Anmerkung**  
Wenn Sie eine Bucket-Richtlinie verwenden, um bedingte Schreibvorgänge zu erzwingen, können Sie keine Kopiervorgänge in den Bucket oder das Präfix ausführen, das in Ihrer Bucket-Richtlinie angegeben ist. `CopyObject`-Anforderungen ohne `If-None-Match`- oder `If-Match`-HTTP-Header schlagen mit einem `403 Access Denied`-Fehler fehl. `CopyObject`-Anforderungen, die mit diesen HTTP-Headern gestellt wurden, schlagen mit einer `501 Not Implemented`-Antwort fehl.

Die folgenden Beispiele zeigen, wie Bedingungen in einer Bucket-Richtlinie verwendet werden, um Clients dazu zu zwingen, einen `If-None-Match`- oder `If-Match`-HTTP-Header zu verwenden.

**Topics**
+ [Beispiel 1: Nur Objekt-Uploads zulassen, die `PutObject`- und `CompleteMultipartUpload`-Anforderungen verwenden, die den `if-none-match`-Header enthalten](#conditional-writes-enforce-ex1)
+ [Beispiel 2: Nur Objekt-Uploads zulassen, die `PutObject`- und `CompleteMultipartUpload`-Anforderungen verwenden, die den `if-match`-Header enthalten](#conditional-writes-enforce-ex2)
+ [Beispiel 3: Nur Objekt-Uploads zulassen, die den `if-none-match`- oder `if-match`-Header enthalten](#conditional-writes-enforce-ex3)

## Beispiel 1: Nur Objekt-Uploads zulassen, die `PutObject`- und `CompleteMultipartUpload`-Anforderungen verwenden, die den `if-none-match`-Header enthalten
<a name="conditional-writes-enforce-ex1"></a>

Diese Richtlinie erlaubt es dem Konto 111122223333, Benutzer Alice, in den Bucket *amzn-s3-demo-bucket1* zu schreiben, wenn die Anfrage den Header `if-none-match` enthält, um sicherzustellen, dass der Objektschlüssel nicht bereits im Bucket vorhanden ist. Alle `PutObject`- und `CompleteMultipartUpload`-Anforderungen an den angegebenen Bucket müssen den `if-none-match`-Header enthalten. Mithilfe dieses Headers können Kunden nur dann in diesen Bucket schreiben, wenn der Objektschlüssel nicht im Bucket vorhanden ist.

**Anmerkung**  
Diese Richtlinie legt auch den `s3:ObjectCreationOperation` Bedingungsschlüssel fest, der mehrteilige Uploads mit, und ermöglicht. `CreateMultipartUpload` `UploadPart` `UploadPartCopy` APIs

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowConditionalPut",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Alice"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*",
            "Condition": {
                "Null": {
                    "s3:if-none-match": "false"
                }
            }
        },
        {
            "Sid": "AllowConditionalPutwithMPUs",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Alice"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*",
            "Condition": {
                "Bool": {
                    "s3:ObjectCreationOperation": "false"
                }
            }
        }
    ]
}
```

------

## Beispiel 2: Nur Objekt-Uploads zulassen, die `PutObject`- und `CompleteMultipartUpload`-Anforderungen verwenden, die den `if-match`-Header enthalten
<a name="conditional-writes-enforce-ex2"></a>

Diese Richtlinie erlaubt dem Konto 111122223333, Benutzerin Alice, nur dann in den *amzn-s3-demo-bucket1* zu schreiben, wenn die Anforderung den `if-match`-Header enthält. Dieser Header vergleicht den ETag Wert eines Objekts in S3 mit einem Wert, den Sie während des `WRITE` Vorgangs angeben. Wenn die ETag Werte nicht übereinstimmen, schlägt der Vorgang fehl. Alle `PutObject`- und `CompleteMultipartUpload`-Anforderungen an den angegebenen Bucket müssen den `if-match`-Header enthalten. 

**Anmerkung**  
Diese Richtlinie legt auch den `s3:ObjectCreationOperation` Bedingungsschlüssel fest, der mehrteilige Uploads unter Verwendung von `CreateMultipartUpload``UploadPart`, und ermöglicht. `UploadPartCopy` APIs

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowPutObject",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Alice"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*",
        },
        {
            "Sid": "BlockNonConditionalObjectCreation",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Alice"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*",
            "Condition": {
                "Null": {
                    "s3:if-match": "true"
                },
                "Bool": {
                    "s3:ObjectCreationOperation": "true"
                }
            }
        },
        {
            "Sid": "AllowGetObjectBecauseConditionalPutIfMatchETag",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Alice"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*"
        }
    ]
}
```

## Beispiel 3: Nur Objekt-Uploads zulassen, die den `if-none-match`- oder `if-match`-Header enthalten
<a name="conditional-writes-enforce-ex3"></a>

Diese Richtlinie erlaubt dem Konto 111122223333, Benutzerin Alice, in den *amzn-s3-demo-bucket1* zu schreiben, wenn die Anforderung den `if-none-match`- oder `if-match`-Header enthält. Auf diese Weise kann Alice ein Objekt hochladen, wenn der Schlüsselname nicht im Bucket existiert, oder wenn der Schlüsselname existiert, kann Alice das Objekt überschreiben, wenn das Objekt dem in der Anfrage ETag angegebenen ETag entspricht. `PUT` 

**Anmerkung**  
Diese Richtlinie legt auch den `s3:ObjectCreationOperation` Bedingungsschlüssel fest, der mehrteilige Uploads unter Verwendung von`CreateMultipartUpload`, und `UploadPart` ermöglicht. `UploadPartCopy` APIs

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": " AllowConditionalPutifAbsent",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Alice"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*",
            "Condition": {
                "Null": {
                    "s3:if-none-match": "false"
                }
            }
        },
        {
            "Sid": "AllowConditionalPutIfMatchEtag",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Alice"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*",
            "Condition": {
                "Null": {
                    "s3:if-match": "false"
                }
            }
        },
        {
            "Sid": "AllowConditionalObjectCreation",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Alice"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*",
            "Condition": {
                "Bool": {
                    "s3:ObjectCreationOperation": "false"
                }
            }
        },
        {
            "Sid": " AllowGetObjectBecauseConditionalPutIfMatchETag",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Alice"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*"
        }
    ]
}
```

------

# So führen Sie bedingte Löschungen durch
<a name="conditional-deletes"></a>

Sie können bedingte Löschungen verwenden, um zu prüfen, ob Ihr Objekt existiert oder unverändert ist, bevor es gelöscht wird. Sie können bedingte Löschungen mithilfe der `DeleteObject`- oder `DeleteObjects`-API-Operationen in S3-Allzweck-Buckets und Verzeichnis-Buckets 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 `ETag`, um zu überprüfen, ob das Objekt geändert wurde.

Sie können bedingte Löschungen auf einer Allzweck-Bucket-Ebene mithilfe von S3-Bucket- oder IAM-Richtlinien (Identity and Access Management) erzwingen. Weitere Informationen finden Sie unter [Erzwingen von bedingten Löschungen auf Amazon S3 Buckets](conditional-delete-enforce.md). 

**Anmerkung**  
Bedingte Löschauswertungen gelten nur für die aktuelle Version des Objekts. 

**Topics**
+ [So prüfen Sie, ob Ihr Objekt vor dem Löschen geändert wurde](#conditional-deletes-etags)
+ [So prüfen Sie, ob Ihr Objekt existiert, bevor Sie es löschen](#conditional-delete)
+ [Erzwingen von bedingten Löschungen auf Amazon S3 Buckets](conditional-delete-enforce.md)

## So prüfen Sie, ob Ihr Objekt vor dem Löschen geändert wurde
<a name="conditional-deletes-etags"></a>

 Mit bedingten Löschungen können Sie Ihre Anwendung vor versehentlichem Löschen von Objekten schützen. Sie können den Header `HTTP If-Match` mit dem Wert `ETag` verwenden, um zu prüfen, ob ein Objekt geändert wurde. Wenn der `ETag` Wert eines Objekts in einem S3-Bucket nicht mit dem Wert `ETag` übereinstimmt, 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](checking-object-integrity-upload.md#checking-object-integrity-etag-and-md5). 

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

Der `If-Match`-Header mit dem `ETag`-Wert wird anhand vorhandener Objekte in einem Bucket ausgewertet. Wenn es ein vorhandenes Objekt mit demselben Schlüsselnamen und dem passenden `ETag` gibt, ist die `DeleteObject` Anfrage erfolgreich und gibt eine `204 No content` Antwort zurück. Wenn das `ETag` nicht übereinstimmt, schlägt der Löschvorgang mit einer `412 Precondition Failed`-Antwort fehl. Um mehrere Objekte mithilfe der `DeleteObjects` Operation bedingt zu löschen, können Sie den `ETag` Wert im `ETag` Element des Objekts im Hauptteil der XML-Anfrage angeben. Wenn die Anforderung 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.

 Bei gleichzeitigen Anfragen kann es auch zu einer `409 Conflict`-Fehlermeldung kommen, wenn eine `DELETE`- oder `PUT`-Objektanfrage erfolgreich ist, bevor eine bedingte Löschoperation 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 APIs verwenden:
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html)

### Mit dem AWS CLI
<a name="conditional-deletes-deleteobject-CLI-etags"></a>

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

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

Weitere Informationen finden Sie unter [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-object.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-object.html) 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ühren`6805f2cfc46c0f04559748bb039d69al`.

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

Weitere Informationen finden Sie unter [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-objects.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-objects.html) in der Referenz zum *AWS CLI -Befehl*. 

Weitere Informationen zu finden Sie unter [Was ist der AWS Command Line Interface? AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) im *AWS Command Line Interface Benutzerhandbuch*. 

## So prüfen Sie, ob Ihr Objekt existiert, bevor Sie es löschen
<a name="conditional-delete"></a>

 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 anzeigen, 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 also `If-Match:*` mit einer `DeleteObject`-API verwenden, ist die Operation nur dann mit einem „`204 No Content`“ erfolgreich, 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](DeleteMarker.md).

Um mehrere Objekte mithilfe der `DeleteObjects`-Operation bedingt zu löschen, können Sie `*` 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 `If-Match:*` durchführen zu können, benötigen Sie die entsprechenden `s3:DeleteObject`-Berechtigungen. 

Sie können den `If-Match` Header mit dem `*` Wert für Folgendes verwenden APIs:
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html)

### Mit dem AWS CLI
<a name="conditional-deleteobject-CLI-etags"></a>

Mit dem folgenden `delete-object` Beispielbefehl wird versucht, ein bedingtes Löschen für ein Objekt durchzuführen`my_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 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-object.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-object.html) in der Referenz zum *AWS CLI -Befehl*.

Mit dem folgenden `delete-objects` Beispielbefehl wird versucht, ein bedingtes Löschen für ein Objekt durchzuführen`my_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 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-objects.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-objects.html) in der Referenz zum *AWS CLI -Befehl*.

Weitere Informationen zu finden Sie unter [Was ist der AWS Command Line Interface? AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) im *AWS Command Line Interface Benutzerhandbuch*. 

# Erzwingen von bedingten Löschungen auf Amazon S3 Buckets
<a name="conditional-delete-enforce"></a>

 Durch die Verwendung von Amazon S3-Bucket-Richtlinien können Sie `If-Match`-Header mit bedingten Löschungen für Objekte in Allzweck-Buckets erzwingen. Wenn der `If-Match`-Header nicht existiert, wird die Anfrage mit einem `403 Access Denied` abgelehnt. Eine Bucket-Richtlinie ist eine auf Ressourcen basierende Richtlinie, die Sie verwenden können, um Zugriffsberechtigungen für Ihren Bucket und die darin enthaltenen Objekte zu erteilen. Nur der Bucket-Eigentümer kann einem Bucket eine Richtlinie zuordnen. Weitere Informationen zu Bucket-Richtlinien finden Sie unter [Bucket-Richtlinien für Amazon S3](bucket-policies.md). 

Die folgenden Beispiele zeigen, wie Bedingungen in einer Bucket-Richtlinie verwendet werden, um Clients dazu zu zwingen, einen `If-Match`-HTTP-Header zu verwenden.

**Topics**
+ [Beispiel 1: Nur bedingte Löschungen unter Verwendung der Kopfzeile `If-Match` mit dem Wert `ETag` zulassen](#conditional-writes-enforce-ex1)
+ [Beispiel 2: Nur bedingte Löschungen unter Verwendung des `If-Match`-Headers mit dem `*`-Wert zulassen](#conditional-deletes-enforce-ex2)

## Beispiel 1: Nur bedingte Löschungen unter Verwendung der Kopfzeile `If-Match` mit dem Wert `ETag` zulassen
<a name="conditional-writes-enforce-ex1"></a>

Mit dieser Bucket-Richtlinie können Sie nur bedingte Löschungen mit `DeleteObject` und `DeleteObjects` Anfragen zulassen, die den `If-Match` Header mit dem `ETag` Wert enthalten. Die `Null` Bedingung stellt sicher, dass der `If-Match` Header vorhanden ist, und die `s3:GetObject` Berechtigung wird erteilt, da bedingte Löschungen mit einem bestimmten ETag Wert `s3:DeleteObject` sowohl als auch `s3:GetObject` Berechtigungen erfordern. Alle nicht bedingten Löschungen würden verweigert und bedingte Löschungen würden erfolgreich sein.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowConditionalDeletes",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Alice"
            },
            "Action": "s3:DeleteObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "Null": {
                    "s3:if-match": "false"
                }
            }
        },
         {
            "Sid": "AllowGetObjectBecauseConditionalDeleteIfMatchETag",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Alice"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
        }
    ]
}
```

## Beispiel 2: Nur bedingte Löschungen unter Verwendung des `If-Match`-Headers mit dem `*`-Wert zulassen
<a name="conditional-deletes-enforce-ex2"></a>

Mit dieser Bucket-Richtlinie können Sie nur bedingte Löschungen mit `DeleteObject` und `DeleteObjects` Anfragen zulassen, die den `If-Match` Header mit dem `*` Wert enthalten. Die `Null` Bedingung stellt sicher, dass der `If-Match` Header vorhanden ist. Da sie nicht gewährt `s3:GetObject` wird, schlagen bedingte Löschungen mit einem bestimmten ETag Wert fehl. Nur das Löschen `If-Match: *` (das prüft das Vorhandensein eines Objekts und erfordert nur eine `s3:DeleteObject` Genehmigung) ist erfolgreich. Alle nicht bedingten Löschungen würden verweigert, und nur `If-Match: *` bedingte Löschungen würden erfolgreich sein.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowConditionalDeletes",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Alice"
            },
            "Action": "s3:DeleteObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "Null": {
                    "s3:if-match": "false"
                }
            }
        }
    ]
}
```