

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Applicazione delle scritture condizionali sui bucket Amazon S3
<a name="conditional-writes-enforce"></a>

Utilizzando le policy di bucket Amazon S3, è possibile imporre scritture condizionali per il caricamento di oggetti nei bucket per uso generico.

Una policy di bucket è una policy basata sulle risorse che può essere utilizzata per concedere le autorizzazioni di accesso al bucket Amazon S3 e agli oggetti in esso contenuti. Solo il proprietario del bucket può associare una policy a un bucket. Per ulteriori informazioni sulle policy di bucket, consulta [Policy dei bucket per Amazon S3](bucket-policies.md).

È possibile utilizzare le chiavi di condizione `s3:if-match` o `s3:if-none-match` come l'elemento opzionale `Condition` o il blocco `Condition` per specificare quando una policy è in vigore. Per i caricamenti in più parti è necessario specificare la chiave `s3:ObjectCreationOperation` condizionale per esentare `UploadPartCopy` le operazioni, e `CreateMultipartUpload``UploadPart`, poiché queste APIs non accettano intestazioni condizionali. Per ulteriori informazioni sull'uso delle condizioni nelle policy di bucket, consulta [Esempi di policy per i bucket che utilizzano le chiavi di condizione](amazon-s3-policy-keys.md).

**Nota**  
Se si usa una policy di bucket per imporre scritture condizionali, non è possibile eseguire operazioni di copia sul bucket o sul prefisso specificato nella policy di bucket. Le richieste `CopyObject` senza un'intestazione HTTP `If-None-Match` o `If-Match` falliscono con un errore `403 Access Denied`. Le richieste `CopyObject` fatte con queste intestazioni HTTP falliscono con una risposta `501 Not Implemented`.

Gli esempi seguenti mostrano come utilizzare le condizioni in una policy di bucket per forzare i client a usare l'intestazione HTTP `If-None-Match` o `If-Match`.

**Topics**
+ [Esempio 1: Consentire solo il caricamento di oggetti utilizzando le richieste `PutObject` e `CompleteMultipartUpload` che includono l'intestazione `if-none-match`](#conditional-writes-enforce-ex1)
+ [Esempio 2: Consentire solo il caricamento di oggetti utilizzando le richieste `PutObject` e `CompleteMultipartUpload` che includono l'intestazione `if-match`](#conditional-writes-enforce-ex2)
+ [Esempio 3: Consentire solo le richieste di caricamento di oggetti che includono l'intestazione `if-none-match` o `if-match`](#conditional-writes-enforce-ex3)

## Esempio 1: Consentire solo il caricamento di oggetti utilizzando le richieste `PutObject` e `CompleteMultipartUpload` che includono l'intestazione `if-none-match`
<a name="conditional-writes-enforce-ex1"></a>

Questa policy consente all’account 111122223333, utente Alice, di scrivere nel bucket *amzn-s3-demo-bucket1* se la richiesta include l’intestazione `if-none-match`, assicurando che la chiave dell’oggetto non sia già presente nel bucket. Tutte le richieste `PutObject` e `CompleteMultipartUpload` al bucket specificato devono includere l'intestazione `if-none-match` per avere successo. Utilizzando questa intestazione, i clienti possono scrivere su questo bucket solo se la chiave dell'oggetto non esiste nel bucket.

**Nota**  
Questa politica imposta anche la chiave `s3:ObjectCreationOperation` condizionale che consente i caricamenti in più parti utilizzando, e. `CreateMultipartUpload` `UploadPart` `UploadPartCopy` APIs

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowConditionalPut",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Alice"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*",
            "Condition": {
                "Null": {
                    "s3:if-none-match": "false"
                }
            }
        },
        {
            "Sid": "AllowConditionalPutwithMPUs",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Alice"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*",
            "Condition": {
                "Bool": {
                    "s3:ObjectCreationOperation": "false"
                }
            }
        }
    ]
}
```

------

## Esempio 2: Consentire solo il caricamento di oggetti utilizzando le richieste `PutObject` e `CompleteMultipartUpload` che includono l'intestazione `if-match`
<a name="conditional-writes-enforce-ex2"></a>

Questa policy consente all'account 111122223333, utente Alice, di scrivere su *amzn-s3-demo-bucket1* solo se la richiesta include l'intestazione `if-match`. Questa intestazione confronta il ETag valore di un oggetto in S3 con quello fornito durante l'operazione. `WRITE` Se i ETag valori non corrispondono, l'operazione fallirà. Tutte le richieste `PutObject` e `CompleteMultipartUpload` al bucket specificato devono includere l'intestazione `if-match` per avere successo. 

**Nota**  
Questo criterio imposta anche la chiave di `s3:ObjectCreationOperation` condizione che consente il caricamento in più parti utilizzando `CreateMultipartUpload``UploadPart`, e. `UploadPartCopy` APIs

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowPutObject",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Alice"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*",
        },
        {
            "Sid": "BlockNonConditionalObjectCreation",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Alice"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*",
            "Condition": {
                "Null": {
                    "s3:if-match": "true"
                },
                "Bool": {
                    "s3:ObjectCreationOperation": "true"
                }
            }
        },
        {
            "Sid": "AllowGetObjectBecauseConditionalPutIfMatchETag",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Alice"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*"
        }
    ]
}
```

## Esempio 3: Consentire solo le richieste di caricamento di oggetti che includono l'intestazione `if-none-match` o `if-match`
<a name="conditional-writes-enforce-ex3"></a>

Questa policy consente all'account 111122223333 e all'utente Alice di scrivere su *amzn-s3-demo-bucket1* se le richieste includono l'intestazione `if-none-match` o `if-match`. Ciò consente ad Alice di caricare un oggetto se il nome della chiave non esiste nel bucket, o se il nome della chiave esiste, Alice può sovrascrivere l'oggetto se l'oggetto ETag corrisponde a quello ETag fornito nella richiesta. `PUT` 

**Nota**  
Questa politica imposta anche la chiave di `s3:ObjectCreationOperation` condizione che consente il caricamento in più parti utilizzando, e. `CreateMultipartUpload` `UploadPart` `UploadPartCopy` APIs

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": " AllowConditionalPutifAbsent",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Alice"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*",
            "Condition": {
                "Null": {
                    "s3:if-none-match": "false"
                }
            }
        },
        {
            "Sid": "AllowConditionalPutIfMatchEtag",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Alice"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*",
            "Condition": {
                "Null": {
                    "s3:if-match": "false"
                }
            }
        },
        {
            "Sid": "AllowConditionalObjectCreation",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Alice"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*",
            "Condition": {
                "Bool": {
                    "s3:ObjectCreationOperation": "false"
                }
            }
        },
        {
            "Sid": " AllowGetObjectBecauseConditionalPutIfMatchETag",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Alice"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*"
        }
    ]
}
```

------