对 Amazon S3 存储桶强制执行有条件删除 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

对 Amazon S3 存储桶强制执行有条件删除

通过使用 Amazon S3 存储桶策略,可以对通用存储桶中的对象强制实施 If-Match 标头和有条件删除。如果 If-Match 标头不存在,则请求将被拒绝并显示 403 Access Denied。存储桶策略是基于资源的策略,您可以使用该策略向存储桶及其中对象授予访问权限。只有存储桶拥有者才能将策略与存储桶关联。有关存储桶策略的更多信息,请参阅 Amazon S3 的存储桶策略

以下示例说明如何使用存储桶策略中的条件来强制客户端使用 If-Match HTTP 标头。

示例 1:仅支持使用带有 ETag 值的 If-Match 标头进行有条件删除

可以使用此存储桶策略来仅支持使用 DeleteObjectDeleteObjects 请求(包含带有 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 标头进行有条件删除

可以使用此存储桶策略来仅支持使用 DeleteObjectDeleteObjects 请求(包含带有 * 值的 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" } } } ] }