

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 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` 標頭。`Null` 條件可確保 `If-Match`標頭存在，並授予 `s3:GetObject`許可，因為具有特定 ETag 值的條件式刪除需要 `s3:DeleteObject`和 `s3:GetObject`許可。所有非條件式刪除都會遭到拒絕，並且會進行條件式刪除。

```
{
    "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` 標頭。`Null` 條件可確保`If-Match`標頭存在。由於 `s3:GetObject` 未授予，具有特定 ETag 值的條件式刪除將會失敗 – 只有 `If-Match: *`（檢查物件是否存在且只需要`s3:DeleteObject`許可） 會成功。所有非條件式刪除都會被拒絕，只有`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"
                }
            }
        }
    ]
}
```