

# 对 Amazon S3 存储桶强制执行有条件删除
<a name="conditional-delete-enforce"></a>

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

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

**Topics**
+ [示例 1：仅支持使用带有 `ETag` 值的 `If-Match` 标头进行有条件删除](#conditional-writes-enforce-ex1)
+ [示例 2：仅支持使用带有 `*` 值的 `If-Match` 标头进行有条件删除](#conditional-deletes-enforce-ex2)

## 示例 1：仅支持使用带有 `ETag` 值的 `If-Match` 标头进行有条件删除
<a name="conditional-writes-enforce-ex1"></a>

可以使用此存储桶策略来仅支持使用 `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` 标头进行有条件删除
<a name="conditional-deletes-enforce-ex2"></a>

可以使用此存储桶策略来仅支持使用 `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"
                }
            }
        }
    ]
}
```