

# Aplicación de eliminaciones condicionales en buckets de Amazon S3
<a name="conditional-delete-enforce"></a>

 Mediante el uso de las políticas de bucket de Amazon S3, puede aplicar el encabezado `If-Match` con eliminaciones condicionales para objetos en los buckets de uso general. Si el encabezado `If-Match` no existe, la solicitud se rechazará con un `403 Access Denied`. Una política de bucket está basada en recursos que puede utilizar para conceder permisos de acceso al bucket y a los objetos que contiene. Solo el propietario del bucket puede asociar una política a un bucket. Para obtener más información acerca de las políticas de bucket, consulte [Políticas de buckets para Amazon S3](bucket-policies.md). 

En los ejemplos siguientes, se muestra cómo utilizar condiciones en una política de bucket para que los clientes utilicen el encabezado HTTP `If-Match`.

**Topics**
+ [Ejemplo 1: Permitir solo eliminaciones condicionales mediante el encabezado `If-Match` con el valor `ETag`](#conditional-writes-enforce-ex1)
+ [Ejemplo 2: Permitir solo eliminaciones condicionales mediante el encabezado `If-Match` con el valor `*`](#conditional-deletes-enforce-ex2)

## Ejemplo 1: Permitir solo eliminaciones condicionales mediante el encabezado `If-Match` con el valor `ETag`
<a name="conditional-writes-enforce-ex1"></a>

Puede usar esta política de bucket para permitir solo las eliminaciones condicionales mediante las solicitudes de `DeleteObject` y `DeleteObjects` que incluyen el encabezado `If-Match` con el valor `ETag`. La condición `Null` garantiza que el encabezado `If-Match` esté presente y se concede el permiso `s3:GetObject` porque las eliminaciones condicionales con un valor de ETag específico requieren permisos `s3:DeleteObject` y `s3:GetObject`. Se rechazarían todas las eliminaciones no condicionales y se aprobarían las eliminaciones condicionales.

```
{
    "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}}/*"
        }
    ]
}
```

## Ejemplo 2: Permitir solo eliminaciones condicionales mediante el encabezado `If-Match` con el valor `*`
<a name="conditional-deletes-enforce-ex2"></a>

Puede usar esta política de bucket para permitir solo las eliminaciones condicionales mediante las solicitudes de `DeleteObject` y `DeleteObjects` que incluyen el encabezado `If-Match` con el valor `*`. La condición `Null` garantiza que el encabezado `If-Match` esté presente. Como no se concede `s3:GetObject`, las eliminaciones condicionales con un valor de ETag específico producirán un error; solo se realizarán correctamente `If-Match: *` (lo que comprueba la existencia del objeto y solo requiere permiso `s3:DeleteObject`). Se rechazarían todas las eliminaciones no condicionales y se aprobarían solo las eliminaciones condicionales `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"
                }
            }
        }
    ]
}
```