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
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.
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.
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.
Themen
Beispiel 1: Nur Objekt-Uploads zulassen, die PutObject
- und CompleteMultipartUpload
-Anforderungen verwenden, die den if-none-match
-Header enthalten
Diese Richtlinie ermöglicht es dem Konto 111122223333, dem Benutzer Alice, in den amzn-s3-demo-bucket1
Bucket zu schreiben, wenn die Anforderung den if-none-match
Header enthält. Dadurch wird sichergestellt, 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 unter Verwendung von, und ermöglicht. CreateMultipartUpload
UploadPart
UploadPartCopy
APIs
{ "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
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
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 vonCreateMultipartUpload
, und UploadPart
ermöglicht. UploadPartCopy
APIs
{ "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
/*" } ] }