

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

このバケットポリシーを使用して、`ETag` 値を持つ `If-Match` ヘッダーを含む `DeleteObject` および `DeleteObjects` リクエストを使用した条件付き削除のみを許可できます。`Null` 条件は、`If-Match` ヘッダーが存在することを確認し、特定の ETag 値を持つ条件付き削除には `s3:DeleteObject` と `s3:GetObject` アクセス許可の両方が必要なため、`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>

このバケットポリシーを使用して、`*` 値を持つ `If-Match` ヘッダーを含む `DeleteObject` および `DeleteObjects` リクエストを使用した条件付き削除のみを許可できます。`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"
                }
            }
        }
    ]
}
```