对 Amazon S3 存储桶强制执行有条件删除
通过使用 Amazon S3 存储桶策略,可以对通用存储桶中的对象强制实施 If-Match
标头和有条件删除。如果 If-Match
标头不存在,则请求将被拒绝并显示 403 Access Denied
。存储桶策略是基于资源的策略,您可以使用该策略向存储桶及其中对象授予访问权限。只有存储桶拥有者才能将策略与存储桶关联。有关存储桶策略的更多信息,请参阅 Amazon S3 的存储桶策略。
以下示例说明如何使用存储桶策略中的条件来强制客户端使用 If-Match
HTTP 标头。
示例 1:仅支持使用带有 ETag
值的 If-Match
标头进行有条件删除
可以使用此存储桶策略来仅支持使用 DeleteObject
和 DeleteObjects
请求(包含带有 ETag
值的 If-Match
标头)来进行有条件删除。所有非条件删除都将被拒绝,有条件删除将通过。
{ "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
/*" } ] }
示例 2:仅支持使用带有 *
值的 If-Match
标头进行有条件删除
可以使用此存储桶策略来仅支持使用 DeleteObject
和 DeleteObjects
请求(包含带有 *
值的 If-Match
标头)来进行有条件删除。所有非条件删除都将被拒绝,有条件删除将通过。
{ "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" } } } ] }