

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.

# 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/*"
        }
    ]
}
```

------