Erzwingen von bedingten Löschungen auf Amazon S3 Buckets - Amazon Simple Storage Service

Erzwingen von bedingten Löschungen auf Amazon S3 Buckets

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.

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

Beispiel 1: Nur bedingte Löschungen unter Verwendung der Kopfzeile If-Match mit dem Wert ETag zulassen

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. 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

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. 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" } } } ] }