

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à.

# Conservazione di più versioni degli oggetti con Controllo delle versioni S3
<a name="Versioning"></a>

La funzione Controllo delle versioni in Amazon S3 è un modo per conservare più versioni di un oggetto nello stesso bucket. Puoi utilizzare la funzione Controllo delle versioni S3 per conservare, recuperare e ripristinare qualsiasi versione di ogni oggetto archiviato nei tuoi bucket. Con la funzione Controllo delle versioni si può facilmente eseguire il ripristino dopo errori dell'applicazione e operazioni non intenzionali dell'utente. Quando abiliti la funzione Controllo delle versioni del bucket, se Amazon S3 riceve più richieste di scrittura per lo stesso oggetto contemporaneamente, vengono archiviati tutti gli oggetti.

I bucket con la funzione Controllo delle versioni abilitata consentono di ripristinare oggetti che sono stati eliminati o sovrascritti accidentalmente. Ad esempio, se elimini un oggetto, Amazon S3 inserisce un contrassegno di eliminazione invece di rimuovere l'oggetto in modo permanente. Il contrassegno di eliminazione diventa la versione corrente dell'oggetto. La sovrascrittura di un oggetto genera una nuove versione dell'oggetto nel bucket. È sempre possibile ripristinare la versione precedente. Per ulteriori informazioni, consulta [Eliminazione di versioni di oggetti da un bucket con funzione Controllo delle versioni abilitata](DeletingObjectVersions.md). 

Per impostazione predefinita, la funzione Controllo delle versioni S3 è disabilitato nei bucket ed è necessario abilitarlo esplicitamente. Per ulteriori informazioni, consulta [Abilitazione della funzione Controllo delle versioni sui bucket](manage-versioning-examples.md).

**Nota**  
L'API SOAP non supporta la funzione Controllo delle versioni S3. Il supporto di SOAP su HTTP non viene più utilizzato, ma è ancora disponibile su HTTPS. Le nuove funzioni di Amazon S3 non sono supportate per SOAP.
A ogni versione archiviata e trasferita di un oggetto si applicano le tariffe Amazon S3 normali. Ogni versione di un oggetto è l'intero oggetto e non semplicemente la sua versione precedente con qualche differenza. Per questo motivo, se sono presenti tre versioni di un oggetto memorizzate verranno addebitati tre oggetti. 

## Bucket senza versione, con funzione Controllo delle versioni e con funzione Controllo delle versioni sospesa
<a name="versioning-states"></a>

I bucket possono trovarsi in uno dei tre stati: 
+ Senza versione (impostazione predefinita)
+ Funzione Controllo delle versioni attivata
+ Funzione Controllo delle versioni sospesa

Puoi abilitare e sospendere la funzione Controllo delle versioni a livello di bucket. Dopo aver abilitato la funzione Controllo delle versioni del bucket, non è possibile riportare il bucket nello stato senza versione. Tuttavia puoi *sospendere* la funzione Controllo delle versioni su tali bucket.

La funzione Controllo delle versioni si applica a tutti (mai solo ad alcuni) oggetti del bucket. Quando si abilita il controllo delle versioni in un bucket, tutti i nuovi oggetti vengono sottoposti al controllo versioni e viene assegnato un ID versione univoco. Gli oggetti già presenti nel bucket al momento in cui è stato abilitato il controllo delle versioni verranno successivamente *sempre* sottoposti al controllo versioni e verrà loro assegnato un ID versione univoco quando vengono modificati da richieste future. Tieni presente quanto segue: 
+ Gli oggetti che sono stati archiviati nel bucket prima dell'impostazione dello stato della funzione Controllo delle versioni hanno un ID versione `null`. Quando si abilita la funzione Controllo delle versioni, gli oggetti esistenti nel bucket non si modificano. Ciò che cambia è il modo in cui Amazon S3 gestirà gli oggetti delle richieste future. Per ulteriori informazioni, consulta [Utilizzo di oggetti in un bucket che supporta la funzione Controllo delle versioni](manage-objects-versioned-bucket.md).
+ Il proprietario del bucket (o un qualsiasi utente con le autorizzazioni appropriate) può sospendere la funzione Controllo delle versioni per interrompere l'accumulo di versioni. Quando si sospende la funzione Controllo delle versioni, gli oggetti esistenti nel bucket non si modificano. Ciò che cambia è il modo in cui Amazon S3 gestirà gli oggetti delle richieste future. Per ulteriori informazioni, consulta [Utilizzo di oggetti di un bucket con funzione Controllo delle versioni sospesa](VersionSuspendedBehavior.md).

## Utilizzo della funzione Controllo delle versioni S3 con il ciclo di vita di S3
<a name="versioning-lifecycle"></a>

La funzione Controllo delle versioni degli oggetti consente, insieme al ciclo di vita di S3, di personalizzare il metodo di conservazione dei dati e di controllare i costi di storage. Per ulteriori informazioni, consulta [Gestione del ciclo di vita degli oggetti](object-lifecycle-mgmt.md). Per informazioni sulla creazione di configurazioni S3 Lifecycle utilizzando,, o l'API Console di gestione AWS REST AWS CLI AWS SDKs, consulta. [Impostazione di una configurazione del ciclo di vita S3 in un bucket](how-to-set-lifecycle-configuration-intro.md)

**Importante**  
Se nel bucket senza funzione Controllo delle versioni è presente una configurazione del ciclo di vita per la scadenza dell'oggetto e si vuole mantenere lo stesso comportamento di eliminazione permanente che si applica quando la funzione Controllo delle versioni è abilitata, è necessario aggiungere una configurazione di scadenza non corrente. La configurazione del ciclo di vita per la scadenza non corrente gestisce le eliminazioni delle versioni non correnti dell'oggetto nel bucket abilitato per il controllo delle versioni. (Un bucket abilitato per il controllo delle versioni mantiene una versione dell'oggetto corrente e zero o più versioni dell'oggetto non correnti.) Per ulteriori informazioni, consulta [Impostazione di una configurazione del ciclo di vita S3 in un bucket](how-to-set-lifecycle-configuration-intro.md).

Per informazioni sull'utilizzo della funzione Controllo delle versioni S3, fai riferimento agli argomenti di seguito.

**Topics**
+ [

## Bucket senza versione, con funzione Controllo delle versioni e con funzione Controllo delle versioni sospesa
](#versioning-states)
+ [

## Utilizzo della funzione Controllo delle versioni S3 con il ciclo di vita di S3
](#versioning-lifecycle)
+ [

# Come funzionano il Controllo delle versioni S3
](versioning-workflows.md)
+ [

# Abilitazione della funzione Controllo delle versioni sui bucket
](manage-versioning-examples.md)
+ [

# Configurazione dell'eliminazione di MFA
](MultiFactorAuthenticationDelete.md)
+ [

# Utilizzo di oggetti in un bucket che supporta la funzione Controllo delle versioni
](manage-objects-versioned-bucket.md)
+ [

# Utilizzo di oggetti di un bucket con funzione Controllo delle versioni sospesa
](VersionSuspendedBehavior.md)
+ [

# Risoluzione dei problemi relativi al controllo delle versioni
](troubleshooting-versioning.md)

# Come funzionano il Controllo delle versioni S3
<a name="versioning-workflows"></a>

Puoi utilizzare il controllo delle versioni S3 per mantenere più versioni di un oggetto in un unico bucket e ripristinare gli oggetti che vengono accidentalmente eliminati o sovrascritti. Ad esempio, se applichi il controllo delle versioni S3 a un bucket, si verificano le seguenti modifiche: 
+ Se anziché rimuovere un oggetto in modo permanente lo elimini, Amazon S3 inserisce un contrassegno di eliminazione che diventa la versione corrente dell'oggetto. È quindi possibile ripristinare la versione precedente. Per ulteriori informazioni, consulta [Eliminazione di versioni di oggetti da un bucket con funzione Controllo delle versioni abilitata](DeletingObjectVersions.md).
+ Se sovrascrivi un oggetto, Amazon S3 aggiunge una nuova versione dell'oggetto nel bucket. La versione precedente rimane nel bucket e diventa una versione non corrente. Puoi ripristinare la versione precedente.

**Nota**  
A ogni versione archiviata e trasferita di un oggetto si applicano le tariffe Amazon S3 normali. Ogni versione di un oggetto è l'intero oggetto e non la sua versione precedente con qualche differenza. Per questo motivo, se sono presenti tre versioni di un oggetto memorizzate verranno addebitati tre oggetti.

A ogni bucket S3 creato è associata una sottorisorsa per la *funzione Controllo delle versioni*. (Per ulteriori informazioni, consulta [Opzioni di configurazione dei bucket per uso generico](UsingBucket.md#bucket-config-options-intro).) Per impostazione predefinita, il bucket è *senza versione*, di conseguenza la sottorisorsa per la funzione Controllo delle versioni archivia una configurazione vuota della funzione Controllo delle versioni.

```
<VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
</VersioningConfiguration>
```

Per abilitare il controllo delle versioni, puoi inviare una richiesta ad Amazon S3 con una configurazione del controllo delle versioni con lo stato `Enabled`. 

```
<VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
  <Status>Enabled</Status> 
</VersioningConfiguration>
```

Per sospendere la funzione Controllo delle versioni, si imposterà il valore dello stato su `Suspended`.

**Nota**  
Quando abiliti il controllo delle versioni in un bucket per la prima volta, potrebbe essere necessario un breve periodo di tempo per la propagazione completa della modifica. Durante la propagazione di questa modifica, è possibile che si verifichino gli errori `HTTP 404 NoSuchKey` intermittenti nelle richieste agli oggetti creati o aggiornati dopo l'abilitazione del controllo delle versioni. Ti consigliamo di attendere 15 minuti dopo aver abilitato il controllo delle versioni prima di eseguire operazioni di scrittura (`PUT` o `DELETE`) sugli oggetti nel bucket. 

Il proprietario del bucket e tutti gli utenti autorizzati AWS Identity and Access Management (IAM) possono abilitare il controllo delle versioni. Il proprietario del bucket è colui Account AWS che ha creato il bucket. Per ulteriori informazioni sulle autorizzazioni, consultare [Identity and Access Management per Amazon S3](security-iam.md).

Per ulteriori informazioni sull'attivazione e la disabilitazione del controllo delle versioni di S3 utilizzando l'API Console di gestione AWS, AWS Command Line Interface (AWS CLI) o REST, consulta. [Abilitazione della funzione Controllo delle versioni sui bucket](manage-versioning-examples.md)

**Topics**
+ [

## Version IDs
](#version-ids)
+ [

## Flussi di lavoro per la funzione Controllo delle versioni
](#versioning-workflows-examples)

## Version IDs
<a name="version-ids"></a>

Se si abilita la funzione Controllo delle versioni del bucket, Amazon S3 genera automaticamente un ID versione univoco per l'oggetto archiviato. Ad esempio, in un bucket è possibile avere due oggetti con la stessa chiave (nome dell'oggetto) ma una versione diversa IDs, ad esempio (versione 111111) e `photo.gif` `photo.gif` (versione 121212).

![\[Diagramma che mostra un bucket abilitato al controllo delle versioni che contiene due oggetti con la stessa chiave ma una versione diversa. IDs\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/versioning_Enabled.png)


Ogni oggetto ha un ID versione, indipendentemente dal fatto che Controllo delle versioni S3 sia abilitato o meno. Se il controllo delle versioni S3 non è abilitato, Amazon S3 imposta il valore dell'ID versione su `null`. Se si attiva la funzione Controllo delle versioni S3, Amazon S3 assegna un valore ID versione per l'oggetto. Questo valore distingue l'oggetto dalle altre versioni della stessa chiave.

Quando si attiva la funzione Controllo delle versioni S3 in un bucket esistente, gli oggetti già archiviati nel bucket rimangono invariati. La versione IDs (`null`), i contenuti e le autorizzazioni rimangono gli stessi. Dopo aver abilitato il controllo delle versioni S3, ogni oggetto aggiunto al bucket ottiene un ID versione che lo distingue dalle altre versioni della stessa chiave. 

Solo Amazon S3 genera versioni IDs che non possono essere modificate. IDs Le versioni sono stringhe opache Unicode, con codifica UTF-8, pronte per l'URL e lunghe non più di 1.024 byte. Di seguito è riportato un esempio:

`3sL4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo`

**Nota**  
Per semplicità, negli altri esempi di questo argomento vengono utilizzati testi molto più brevi. IDs



## Flussi di lavoro per la funzione Controllo delle versioni
<a name="versioning-workflows-examples"></a>

Se si esegue l'operazione `PUT` su un oggetto in un bucket abilitato per il controllo delle versioni, la versione non corrente non viene sovrascritta. Come mostrato nella seguente figura, quando viene eseguita un'operazione `PUT` per una nuova versione di `photo.gif` in un bucket che già contiene un oggetto con lo stesso nome:
+ L'oggetto originale (ID = 111111) rimane nel bucket.
+ Amazon S3 genera un nuovo ID versione (121212) e aggiunge nel bucket questa versione più recente dell'oggetto.

![\[Diagramma che mostra il funzionamento del controllo delle versioni S3 quando si esegue l'operazione PUT per un oggetto in un bucket con il controllo delle versioni abilitato.\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/versioning_PUT_versionEnabled3.png)


Con questa funzionalità è possibile recuperare la versione precedente di un oggetto che è stato accidentalmente sovrascritto o eliminato.

Quando esegui l'operazione `DELETE` per un oggetto, tutte le versioni rimangono nel bucket e Amazon S3 inserisce un contrassegno di eliminazione, come mostrato nell'illustrazione seguente.

![\[Illustrazione che mostra l'inserimento di un contrassegno di eliminazione.\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/versioning_DELETE_versioningEnabled.png)


Il contrassegno di eliminazione diventa la versione corrente dell'oggetto. Per default, le richieste `GET` recuperano la versione più recente archiviata. L'esecuzione di una richiesta `GET Object` quando la versione corrente è un contrassegno di eliminazione restituisce un errore `404 Not Found`, come mostrato nell'illustrazione seguente.

![\[Illustrazione che mostra una GetObject chiamata per un marker di eliminazione che restituisce un errore 404 (Not Found).\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/versioning_DELETE_NoObjectFound.png)


È possibile, tuttavia, eseguire un'operazione `GET` su una versione non corrente di un oggetto specificando l'ID versione corrispondente. Nell'illustrazione seguente viene eseguita un'operazione `GET` su una versione specifica dell'oggetto (111111). Amazon S3 restituisce la versione dell'oggetto anche se non è la versione corrente.

Per ulteriori informazioni, consulta [Recupero delle versioni degli oggetti da un bucket con funzione Controllo delle versioni abilitata](RetrievingObjectVersions.md).

![\[Diagramma che illustra come funziona il controllo delle versioni S3 quando si esegue l'operazione GET per una versione non corrente in un bucket con il controllo delle versioni abilitato.\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/versioning_GET_Versioned3.png)


È possibile eliminare in modo permanente un oggetto specificando la versione che si desidera eliminare. Soltanto il proprietario del bucket di Amazon S3 o un utente IAM può eliminare definitivamente una versione. Se l'operazione `DELETE` specifica `versionId`, la versione dell'oggetto viene eliminata definitivamente e Amazon S3 non inserisce un contrassegno di eliminazione.

![\[Diagramma che mostra in che modo DELETE versionId elimini definitivamente una versione specifica dell'oggetto.\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/versioning_DELETE_versioningEnabled2.png)


Puoi aggiungere un ulteriore livello di sicurezza configurando un bucket per abilitare l'eliminazione con autenticazione a più fattori (MFA). Quando abiliti l'eliminazione MFA per un bucket, il proprietario del bucket deve includere due tipi di autenticazione in qualsiasi richiesta per eliminare una versione o modificare lo stato del controllo delle versioni del bucket. Per ulteriori informazioni, consulta [Configurazione dell'eliminazione di MFA](MultiFactorAuthenticationDelete.md).

### Quando vengono create nuove versioni per un oggetto?
<a name="versioning-workflows-new-versions"></a>

Le nuove versioni vengono create solo quando esegui l'operazione `PUT` per un nuovo oggetto. Tieni presente che alcune azioni, come `CopyObject`, funzionano implementando un'operazione `PUT`.

Alcune azioni che modificano l'oggetto corrente non creano una nuova versione perché non eseguono l'operazione `PUT` di un nuovo oggetto. Ciò include azioni come la modifica dei tag su un oggetto. 

**Importante**  
Se rilevi un aumento significativo nel numero di risposte HTTP 503 (servizio non disponibile) ricevute per le richieste `PUT` o `DELETE` di Amazon S3 in un bucket con il controllo delle versioni S3 abilitato, è possibile che esistano uno o più oggetti nel bucket per i quali sono presenti milioni di versioni. Per ulteriori informazioni, consulta la sezione sul controllo delle versioni S3 in [Risoluzione dei problemi relativi al controllo delle versioni](troubleshooting-versioning.md).

# Abilitazione della funzione Controllo delle versioni sui bucket
<a name="manage-versioning-examples"></a>

È possibile utilizzare la funzione Controllo delle versioni S3 per mantenere più versioni di un oggetto in un bucket. Questa sezione fornisce esempi di come abilitare il controllo delle versioni su un bucket utilizzando la console, l'API REST e (). AWS SDKs AWS Command Line Interface AWS CLI

**Nota**  
Dopo aver abilitato il controllo delle versioni in un bucket per la prima volta, potrebbero essere necessari fino a 15 minuti per la propagazione completa della modifica nel sistema S3. Durante questo periodo, le richieste `GET` per oggetti creati o aggiornati dopo aver abilitato il controllo delle versioni possono causare errori `HTTP 404 NoSuchKey`. È consigliabile attendere 15 minuti dopo aver abilitato il controllo delle versioni prima di eseguire operazioni di scrittura (`PUT` o `DELETE`) sugli oggetti nel bucket. Questo periodo di attesa consente di evitare potenziali problemi con la visibilità degli oggetti e il controllo delle versioni.

Per ulteriori informazioni sulla funzione Controllo delle versioni S3, consulta [Conservazione di più versioni degli oggetti con Controllo delle versioni S3](Versioning.md). Per informazioni sull'utilizzo di oggetti che si trovano in bucket con la funzione Controllo delle versioni abilitata, consulta [Utilizzo di oggetti in un bucket che supporta la funzione Controllo delle versioni](manage-objects-versioned-bucket.md).

Per ulteriori informazioni su come utilizzare la funzionalità S3 di controllo delle versioni per proteggere i dati, consulta [Tutorial: Protezione dei dati su Amazon S3 da eliminazioni accidentali o bug delle applicazioni mediante le funzionalità S3 di controllo delle versioni, blocco degli oggetti e replica](https://aws.amazon.com/getting-started/hands-on/protect-data-on-amazon-s3/?ref=docs_gateway/amazons3/manage-versioning-examples.html).

A ogni bucket S3 creato è associata una sottorisorsa per la *funzione Controllo delle versioni*. (Per ulteriori informazioni, consulta [Opzioni di configurazione dei bucket per uso generico](UsingBucket.md#bucket-config-options-intro).) Per impostazione predefinita, il bucket è *senza versione*, di conseguenza la sottorisorsa per la funzione Controllo delle versioni archivia una configurazione vuota della funzione Controllo delle versioni.

```
<VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
</VersioningConfiguration>
```

Per abilitare la funzione Controllo delle versioni, è possibile inviare una richiesta ad Amazon S3 con una configurazione della funzione che include lo stato. 

```
<VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
  <Status>Enabled</Status> 
</VersioningConfiguration>
```

Per sospendere la funzione Controllo delle versioni, si imposterà il valore dello stato su `Suspended`.

Il proprietario del bucket e tutti gli utenti autorizzati possono abilitare il controllo delle versioni. Il proprietario del bucket è colui Account AWS che ha creato il bucket (l'account root). Per ulteriori informazioni sulle autorizzazioni, consultare [Identity and Access Management per Amazon S3](security-iam.md).

Le sezioni seguenti forniscono maggiori dettagli sull'abilitazione del controllo delle versioni di S3 utilizzando la console e il AWS CLI. AWS SDKs

## Utilizzo della console S3
<a name="enable-versioning"></a>

Segui questi passaggi per utilizzare per Console di gestione AWS abilitare il controllo delle versioni su un bucket S3.

**Come abilitare o disabilitare il controllo delle versioni su un bucket per uso generico S3**

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel riquadro di navigazione sinistro, scegli **Bucket per uso generico**.

1. Nell’elenco dei bucket scegli il nome del bucket per il quale desideri abilitare il controllo delle versioni.

1. Scegliere **Properties (Proprietà)**.

1. In **Bucket Versioning (Funzione Controllo delle versioni del bucket)** scegliere **Edit (Modifica)**.

1. Scegliere **Suspend (Sospendi)** o **Enable (Abilita)**, quindi scegliere **Save changes (Salva modifiche)**.

**Nota**  
È possibile utilizzare l' AWS autenticazione a più fattori (MFA) con il controllo delle versioni. Quando utilizzi l'MFA con il controllo delle versioni, devi fornire le tue chiavi Account AWS di accesso e un codice valido dal dispositivo MFA dell'account per eliminare definitivamente una versione dell'oggetto o sospendere o riattivare il controllo delle versioni.   
Per utilizzare l'autenticazione MFA con la funzione Controllo delle versioni, abilita `MFA Delete`. Non è possibile abilitare `MFA Delete` utilizzando la Console di gestione AWS. È necessario utilizzare () o l'API AWS Command Line Interface .AWS CLI Per ulteriori informazioni, consulta [Configurazione dell'eliminazione di MFA](MultiFactorAuthenticationDelete.md).

## Usando il AWS CLI
<a name="manage-versioning-examples-cli"></a>

L’esempio seguente abilita il controllo delle versioni su un bucket per uso generico S3. 

```
aws s3api put-bucket-versioning --bucket amzn-s3-demo-bucket1 --versioning-configuration Status=Enabled
```

L’esempio seguente abilita il controllo delle versioni S3 e l’eliminazione dell’autenticazione a più fattori (MFA) su un bucket per un dispositivo MFA fisico. Per i dispositivi MFA fisici, nel parametro `--mfa`, inserisci una concatenazione del numero di serie del dispositivo MFA, uno spazio e il valore visualizzato sul dispositivo di autenticazione.

```
aws s3api put-bucket-versioning --bucket amzn-s3-demo-bucket1 --versioning-configuration Status=Enabled,MFADelete=Enabled --mfa "SerialNumber 123456"
```

L’esempio seguente abilita il controllo delle versioni S3 e l’eliminazione dell’autenticazione a più fattori (MFA) su un bucket per un dispositivo MFA virtuale. Per i dispositivi MFA virtuali, nel parametro `--mfa`, inserisci una concatenazione dell’ARN del dispositivo MFA, uno spazio e il valore visualizzato sul dispositivo di autenticazione.

```
aws s3api put-bucket-versioning --bucket amzn-s3-demo-bucket1 --versioning-configuration Status=Enabled,MFADelete=Enabled --mfa "arn:aws:iam::account-id:mfa/root-account-mfa-device 123789"
```

**Nota**  
L'utilizzo dell'eliminazione di MFA richiede un dispositivo di autenticazione fisico o virtuale approvato. Per ulteriori informazioni sull'utilizzo dell'eliminazione di MFA in Amazon S3, consulta [Configurazione dell'eliminazione di MFA](MultiFactorAuthenticationDelete.md).

Per ulteriori informazioni sull'abilitazione del controllo delle versioni utilizzando il AWS CLI, vedere [put-bucket-versioning](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-versioning.html)nel *AWS CLI Command Reference.*

## Usando il AWS SDKs
<a name="manage-versioning-examples-sdk"></a>

Gli esempi seguenti abilitano il controllo delle versioni su un bucket e quindi recuperano lo stato del controllo delle versioni utilizzando e il. AWS SDK per Java AWS SDK per .NET[Per informazioni sull'utilizzo di altri AWS SDKs, consulta il Developer Center.AWS](https://aws.amazon.com/code/)

------
#### [ .NET ]

Per informazioni sulla configurazione e l'esecuzione degli esempi di codice, consulta [Getting Started with the AWS SDK for .NET nella AWS SDK for](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) .NET *Developer Guide*. 

```
using System;
using Amazon.S3;
using Amazon.S3.Model;

namespace s3.amazon.com.rproxy.goskope.com.docsamples
{
    class BucketVersioningConfiguration
    {
        static string bucketName = "*** bucket name ***";

        public static void Main(string[] args)
        {
            using (var client = new AmazonS3Client(Amazon.RegionEndpoint.USEast1))
            {
                try
                {
                    EnableVersioningOnBucket(client);
                    string bucketVersioningStatus = RetrieveBucketVersioningConfiguration(client);
                }
                catch (AmazonS3Exception amazonS3Exception)
                {
                    if (amazonS3Exception.ErrorCode != null &&
                        (amazonS3Exception.ErrorCode.Equals("InvalidAccessKeyId")
                        ||
                        amazonS3Exception.ErrorCode.Equals("InvalidSecurity")))
                    {
                        Console.WriteLine("Check the provided AWS Credentials.");
                        Console.WriteLine(
                        "To sign up for service, go to http://aws.amazon.com/s3");
                    }
                    else
                    {
                        Console.WriteLine(
                         "Error occurred. Message:'{0}' when listing objects",
                         amazonS3Exception.Message);
                    }
                }
            }

            Console.WriteLine("Press any key to continue...");
            Console.ReadKey();
        }

        static void EnableVersioningOnBucket(IAmazonS3 client)
        {

                PutBucketVersioningRequest request = new PutBucketVersioningRequest
                {
                    BucketName = bucketName,
                    VersioningConfig = new S3BucketVersioningConfig 
                    {
                        Status = VersionStatus.Enabled
                    }
                };

                PutBucketVersioningResponse response = client.PutBucketVersioning(request);
        }


        static string RetrieveBucketVersioningConfiguration(IAmazonS3 client)
        {
                GetBucketVersioningRequest request = new GetBucketVersioningRequest
                {
                    BucketName = bucketName
                };
 
                GetBucketVersioningResponse response = client.GetBucketVersioning(request);
                return response.VersioningConfig.Status;
            }
    }
}
```

------
#### [ Java ]

Per istruzioni su come creare e testare un esempio funzionante, consulta [Getting Started](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/getting-started.html) nella AWS SDK per Java Developer Guide.

```
import java.io.IOException;

import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Region;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.AmazonS3Exception;
import com.amazonaws.services.s3.model.BucketVersioningConfiguration;
import com.amazonaws.services.s3.model.SetBucketVersioningConfigurationRequest;

public class BucketVersioningConfigurationExample {
    public static String bucketName = "*** bucket name ***"; 
    public static AmazonS3Client s3Client;

    public static void main(String[] args) throws IOException {
        s3Client = new AmazonS3Client(new ProfileCredentialsProvider());
        s3Client.setRegion(Region.getRegion(Regions.US_EAST_1));
        try {

            // 1. Enable versioning on the bucket.
        	BucketVersioningConfiguration configuration = 
        			new BucketVersioningConfiguration().withStatus("Enabled");
            
			SetBucketVersioningConfigurationRequest setBucketVersioningConfigurationRequest = 
					new SetBucketVersioningConfigurationRequest(bucketName,configuration);
			
			s3Client.setBucketVersioningConfiguration(setBucketVersioningConfigurationRequest);
			
			// 2. Get bucket versioning configuration information.
			BucketVersioningConfiguration conf = s3Client.getBucketVersioningConfiguration(bucketName);
			 System.out.println("bucket versioning configuration status:    " + conf.getStatus());

        } catch (AmazonS3Exception amazonS3Exception) {
            System.out.format("An Amazon S3 error occurred. Exception: %s", amazonS3Exception.toString());
        } catch (Exception ex) {
            System.out.format("Exception: %s", ex.toString());
        }        
    }
}
```

------
#### [ Python ]

Nel seguente codice Python di esempio viene creato un bucket Amazon S3, viene abilitato per il controllo delle versioni e viene configurato un ciclo di vita che fa scadere le versioni degli oggetti non simultanee dopo 7 giorni.

```
def create_versioned_bucket(bucket_name, prefix):
    """
    Creates an Amazon S3 bucket, enables it for versioning, and configures a lifecycle
    that expires noncurrent object versions after 7 days.

    Adding a lifecycle configuration to a versioned bucket is a best practice.
    It helps prevent objects in the bucket from accumulating a large number of
    noncurrent versions, which can slow down request performance.

    Usage is shown in the usage_demo_single_object function at the end of this module.

    :param bucket_name: The name of the bucket to create.
    :param prefix: Identifies which objects are automatically expired under the
                   configured lifecycle rules.
    :return: The newly created bucket.
    """
    try:
        bucket = s3.create_bucket(
            Bucket=bucket_name,
            CreateBucketConfiguration={
                "LocationConstraint": s3.meta.client.meta.region_name
            },
        )
        logger.info("Created bucket %s.", bucket.name)
    except ClientError as error:
        if error.response["Error"]["Code"] == "BucketAlreadyOwnedByYou":
            logger.warning("Bucket %s already exists! Using it.", bucket_name)
            bucket = s3.Bucket(bucket_name)
        else:
            logger.exception("Couldn't create bucket %s.", bucket_name)
            raise

    try:
        bucket.Versioning().enable()
        logger.info("Enabled versioning on bucket %s.", bucket.name)
    except ClientError:
        logger.exception("Couldn't enable versioning on bucket %s.", bucket.name)
        raise

    try:
        expiration = 7
        bucket.LifecycleConfiguration().put(
            LifecycleConfiguration={
                "Rules": [
                    {
                        "Status": "Enabled",
                        "Prefix": prefix,
                        "NoncurrentVersionExpiration": {"NoncurrentDays": expiration},
                    }
                ]
            }
        )
        logger.info(
            "Configured lifecycle to expire noncurrent versions after %s days "
            "on bucket %s.",
            expiration,
            bucket.name,
        )
    except ClientError as error:
        logger.warning(
            "Couldn't configure lifecycle on bucket %s because %s. "
            "Continuing anyway.",
            bucket.name,
            error,
        )

    return bucket
```

------

# Configurazione dell'eliminazione di MFA
<a name="MultiFactorAuthenticationDelete"></a>

Quando si utilizza la funzione Controllo delle versioni S3 nei bucket Amazon S3, puoi aggiungere un altro livello di sicurezza configurando un bucket per abilitare l'*eliminazione MFA (autenticazione a più fattori)*. In tal caso, il proprietario del bucket deve includere due tipi di autenticazione in qualsiasi richiesta per eliminare una versione o modificare lo stato della funzione Controllo delle versioni del bucket.

La cancellazione MFA richiede autenticazione aggiuntiva per le seguenti operazioni:
+ Modifica dello stato della funzione Controllo delle versioni del bucket
+ Eliminazione permanente della versione di un oggetto

La cancellazione MFA richiede due forme di autenticazione contemporaneamente:
+ Le credenziali di sicurezza
+ la sequenza di un numero di serie valido, uno spazio e il codice a sei cifre visualizzato sul dispositivo di autenticazione approvato.

La cancellazione MFA fornisce così una protezione ulteriore, ad esempio se le credenziali di sicurezza fossero compromesse. L'eliminazione di MFA può aiutare a prevenire le eliminazioni accidentali dei bucket richiedendo all'utente che avvia l'azione di eliminazione di dimostrare il possesso fisico di un dispositivo MFA con un codice MFA e aggiungendo un ulteriore livello di interazione e sicurezza all'azione di eliminazione.

Per identificare i bucket con la funzionalità di eliminazione dell'autenticazione a più fattori (MFA) abilitata, puoi utilizzare i parametri di Amazon S3 Storage Lens. S3 Storage Lens è una funzionalità di analisi dell'archiviazione su cloud che puoi utilizzare per avere una panoramica completa a livello di organizzazione sull'utilizzo e sulle attività relative all'archiviazione di oggetti. Per ulteriori informazioni, consulta [ Valutazione dell'attività e dell'utilizzo dello storage con S3 Storage Lens](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens?icmpid=docs_s3_user_guide_MultiFactorAuthenticationDelete.html). Per un elenco completo dei parametri, consulta [Glossario dei parametri di S3 Storage](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_metrics_glossary.html?icmpid=docs_s3_user_guide_MultiFactorAuthenticationDelete.html).

Il proprietario del bucket, chi Account AWS ha creato il bucket (account root) e tutti gli utenti autorizzati possono abilitare il controllo delle versioni. Tuttavia, solo il proprietario del bucket (account root) può abilitare l'eliminazione di MFA. Per ulteriori informazioni, consulta la sezione [Protezione dell'accesso all' AWS utilizzo della MFA](https://aws.amazon.com/blogs/security/securing-access-to-aws-using-mfa-part-3/) nel blog AWS sulla sicurezza.

**Nota**  
Per utilizzare l'eliminazione MFA con la funzione Controllo delle versioni, abilita `MFA Delete`. Tuttavia, non è possibile abilitare `MFA Delete` l'utilizzo la Console di gestione AWS. È necessario utilizzare AWS Command Line Interface (AWS CLI) o l'API.   
Per esempi sull'utilizzo dell'eliminazione MFA con il controllo delle versioni, consulta la sezione degli esempi nell'argomento [Abilitazione della funzione Controllo delle versioni sui bucket](manage-versioning-examples.md).  
Non puoi utilizzare l'eliminazione MFA con le configurazioni del ciclo di vita. Per ulteriori informazioni sulle configurazioni del ciclo di vita e sul modo in cui interagiscono con altre configurazioni, consulta [Come il ciclo di vita S3 interagisce con altre configurazioni del bucket](lifecycle-and-other-bucket-config.md).

Per abilitare o disabilitare la cancellazione MFA si ricorre alla stessa API utilizzata per configurare la funzione Controllo delle versioni di un bucket. Amazon S3 archivia la configurazione della cancellazione MFA nella stessa sottorisorsa della *funzione Controllo delle versioni* che contiene lo stato della funzione Controllo delle versioni del bucket.

```
<VersioningConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
  <Status>VersioningState</Status>
  <MfaDelete>MfaDeleteState</MfaDelete>  
</VersioningConfiguration>
```

Per usare la cancellazione MFA si può utilizzare un dispositivo MFA fisico o virtuale per generare un codice di autenticazione. L'esempio seguente mostra il codice di autenticazione generato visualizzato su un dispositivo hardware.

![\[Un esempio di codice di autenticazione generato visualizzato su un dispositivo hardware.\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/MFADevice.png)


La cancellazione MFA e l'accesso all'API protetto con autenticazione MFA sono caratteristiche destinate a offrire protezione in vari scenari. La cancellazione MFA viene configurata su un bucket per far sì che i dati del bucket non possano essere eliminati accidentalmente. Si utilizza l'accesso all'API protetto con autenticazione MFA per forzare un altro fattore di autenticazione (codice MFA) durante l'accesso a risorse Amazon S3 sensibili. Puoi richiedere che qualsiasi operazione su tali risorse di Amazon S3 venga eseguita fornendo credenziali temporanee create utilizzando MFA. Per un esempio, consulta [Richiesta dell'autenticazione a più fattori (MFA)](example-bucket-policies.md#example-bucket-policies-MFA). 

Per ulteriori informazioni su come acquistare e attivare un dispositivo di autenticazione, consulta [Autenticazione a più fattori](https://aws.amazon.com/iam/details/mfa/).

## Abilitazione del controllo delle versioni S3 e configurazione dell'eliminazione MFA
<a name="enable-versioning-mfa-delete"></a>

### Usando il AWS CLI
<a name="enable-versioning-mfa-delete-cli"></a>

Il numero di serie è il numero che identifica in modo univoco il dispositivo MFA. Per i dispositivi MFA fisici, si tratta del numero di serie univoco fornito con il dispositivo. Per i dispositivi MFA virtuali, il numero di serie è l'ARN del dispositivo. Per utilizzare i seguenti comandi, sostituisci *user input placeholders* con le tue specifiche informazioni.

L’esempio seguente abilita il controllo delle versioni S3 e l’eliminazione dell’autenticazione a più fattori (MFA) su un bucket per un dispositivo MFA fisico. Per i dispositivi MFA fisici, nel parametro `--mfa`, inserisci una concatenazione del numero di serie del dispositivo MFA, uno spazio e il valore visualizzato sul dispositivo di autenticazione.

```
aws s3api put-bucket-versioning --bucket amzn-s3-demo-bucket1 --versioning-configuration Status=Enabled,MFADelete=Enabled --mfa "SerialNumber 123456"
```

L’esempio seguente abilita il controllo delle versioni S3 e l’eliminazione dell’autenticazione a più fattori (MFA) su un bucket per un dispositivo MFA virtuale. Per i dispositivi MFA virtuali, nel parametro `--mfa`, inserisci una concatenazione dell’ARN del dispositivo MFA, uno spazio e il valore visualizzato sul dispositivo di autenticazione.

```
aws s3api put-bucket-versioning --bucket amzn-s3-demo-bucket1 --versioning-configuration Status=Enabled,MFADelete=Enabled --mfa "arn:aws:iam::account-id:mfa/root-account-mfa-device 123789"
```

Per ulteriori informazioni, consulta l'articolo AWS RePost [Come posso attivare l'eliminazione tramite MFA per il mio bucket Amazon S3](https://repost.aws/knowledge-center/s3-bucket-mfa-delete)? .

### Utilizzo della REST API
<a name="enable-versioning-mfa-delete-rest-api"></a>

Per ulteriori informazioni su come specificare l'eliminazione MFA utilizzando l'API REST di Amazon S3, consulta [PutBucketVersioning](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html)*Amazon Simple* Storage Service API Reference.

# Utilizzo di oggetti in un bucket che supporta la funzione Controllo delle versioni
<a name="manage-objects-versioned-bucket"></a>

Gli oggetti che sono stati archiviati nel bucket Amazon S3 prima dell'impostazione dello stato della funzione Controllo delle versioni hanno un ID versione `null`. Quando si abilita la funzione Controllo delle versioni, gli oggetti esistenti nel bucket non si modificano. Ciò che cambia è il modo in cui Amazon S3 gestirà gli oggetti delle richieste future.

**Trasferimento delle versioni di un oggetto**  
È possibile definire regole di configurazione del ciclo di vita per gli oggetti con un ciclo di vita ben definito per trasferire le versioni di tali oggetti alla classe di archiviazione S3 Glacier Flexible Retrieval (Recupero flessibile S3 Glacier) in uno specifico momento del ciclo di vita. Per ulteriori informazioni, consulta [Gestione del ciclo di vita degli oggetti](object-lifecycle-mgmt.md).

Gli argomenti di questa sezione illustrano varie operazioni sugli oggetti di un bucket che supporta la funzione Controllo delle versioni. Per ulteriori informazioni sulla funzione Controllo delle versioni, consulta [Conservazione di più versioni degli oggetti con Controllo delle versioni S3](Versioning.md).

**Topics**
+ [

# Aggiunta di oggetti a bucket che supportano la funzione Controllo delle versioni
](AddingObjectstoVersioningEnabledBuckets.md)
+ [

# Elenchi di oggetti in un bucket che supporta la funzione Controllo delle versioni
](list-obj-version-enabled-bucket.md)
+ [

# Recupero delle versioni degli oggetti da un bucket con funzione Controllo delle versioni abilitata
](RetrievingObjectVersions.md)
+ [

# Eliminazione di versioni di oggetti da un bucket con funzione Controllo delle versioni abilitata
](DeletingObjectVersions.md)
+ [

# Configurazione delle autorizzazioni degli oggetti con versione
](VersionedObjectPermissionsandACLs.md)

# Aggiunta di oggetti a bucket che supportano la funzione Controllo delle versioni
<a name="AddingObjectstoVersioningEnabledBuckets"></a>

Dopo aver abilitato la funzione Controllo delle versioni del bucket, Amazon S3 aggiungerà automaticamente un ID versione univoco a ogni oggetto archiviato (utilizzando `PUT`, `POST` o `CopyObject`) nel bucket. 

La figura seguente mostra l'aggiunta di un ID univoco a un oggetto da parte di Amazon S3 quando l'oggetto viene aggiunto a un bucket con la funzione Controllo delle versioni abilitata. 

![\[Illustrazione che mostra l'aggiunta di un ID versione univoco a un oggetto quando l'oggetto viene aggiunto a un bucket con il controllo delle versioni abilitato.\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/versioning_PUT_versionEnabled.png)


**Nota**  
I valori degli ID versione assegnati da Amazon S3 sono compatibili con l'URL (possono essere inclusi in un URI).

Per ulteriori informazioni sulla funzione Controllo delle versioni, consulta [Conservazione di più versioni degli oggetti con Controllo delle versioni S3](Versioning.md). Puoi aggiungere versioni di oggetti a un bucket abilitato al controllo delle versioni utilizzando la console e l'API REST. AWS SDKs

## Utilizzo della console
<a name="add-obj-versioning-enabled-bucket-console"></a>

Per istruzioni, consulta [Caricamento degli oggetti](upload-objects.md). 

## Utilizzando il AWS SDKs
<a name="add-obj-versioning-enabled-bucket-sdk"></a>

Per esempi di caricamento di oggetti utilizzando AWS SDKs per Java, .NET e PHP, vedere. [Caricamento degli oggetti](upload-objects.md) Gli esempi di caricamento di oggetti in bucket senza versione e con funzione Controllo delle versioni abilitata sono identici ma, nel caso dei bucket con funzione Controllo delle versioni abilitata, Amazon S3 assegna un numero di versione. Negli altri casi il numero di versione è null. 

Per informazioni sull'utilizzo di altri AWS SDKs, consultate il [AWS Developer](https://aws.amazon.com/code/) Center. 

## Utilizzo della REST API
<a name="add-obj-versioning-enabled-bucket-rest"></a>

**Per aggiungere oggetti a bucket che supportano la funzione Controllo delle versioni**

1. Abilitare la funzione Controllo delle versioni del bucket tramite una richiesta `PutBucketVersioning`.

   Per ulteriori informazioni, consulta [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTVersioningStatus.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTVersioningStatus.html) in *Amazon Simple Storage Service API Reference* (Guida di riferimento per l'API di Amazon Simple Storage Service).

1. Inviare una richiesta `PUT`, `POST` o `CopyObject` per memorizzare un oggetto nel bucket.

Quando si aggiunge un oggetto a un bucket con la funzione Controllo delle versioni abilitata, Amazon S3 restituisce l'ID versione dell'oggetto nell'intestazione di risposta `x-amz-version-id`, come mostrato nell'esempio di seguito.

```
1. x-amz-version-id: 3/L4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY
```

# Elenchi di oggetti in un bucket che supporta la funzione Controllo delle versioni
<a name="list-obj-version-enabled-bucket"></a>

Questa sezione fornisce esempi di elenchi di versioni di oggetti di un bucket con funzione Controllo delle versioni abilitata. Amazon S3 archivia le informazioni sulla versione di un oggetto nella sottorisorsa *versioni* associata al bucket. Per ulteriori informazioni, consulta [Opzioni di configurazione dei bucket per uso generico](UsingBucket.md#bucket-config-options-intro). Per elencare gli oggetti in un bucket con il controllo delle versioni abilitato, è necessario disporre dell'autorizzazione `ListBucketVersions`.

## Utilizzo della console S3
<a name="view-object-versions"></a>

Segui questi passaggi per utilizzare la console di Amazon S3 per visualizzare le varie versioni di un oggetto.

**Per visualizzare più versioni di un oggetto**

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nell'elenco **Buckets (Bucket)** scegliere il nome del bucket contenente l'oggetto.

1. Per visualizzare un elenco delle versioni degli oggetti nel bucket, scegli l'opzione **Show versions** (Mostra versioni). 

   Per ogni versione dell'oggetto, la console mostra un ID versione univoco, la data e l'ora di creazione della versione e altre proprietà. Gli oggetti archiviati nel bucket prima dell'impostazione dello stato della funzione Controllo delle versioni hanno un ID versione **null**.

   Per elencare gli oggetti senza le versioni, scegliere l'opzione **List versions (Elenca versioni)** .

Puoi anche visualizzare, scaricare ed eliminare le versioni degli oggetti nel riquadro di panoramica sull'oggetto della console. Per ulteriori informazioni, consulta [Visualizzazione delle proprietà di un oggetto nella console di Amazon S3](view-object-properties.md).

**Nota**  
 Per accedere a versioni di oggetti precedenti a 300 versioni, è necessario utilizzare la AWS CLI o l'URL dell'oggetto.

**Importante**  
È possibile annullare l'eliminazione di un oggetto solo se è stato eliminato come ultima versione (corrente). Non è possibile annullare l'eliminazione della versione precedente di un oggetto eliminato. Per ulteriori informazioni, consulta [Conservazione di più versioni degli oggetti con Controllo delle versioni S3](Versioning.md).

## Utilizzando il AWS SDKs
<a name="list-obj-version-enabled-bucket-sdk-examples"></a>

Gli esempi di questa sezione mostrano come recuperare un elenco di oggetti da un bucket con funzione Controllo delle versioni abilitata. Ogni richiesta restituisce fino a 1.000 versioni, a meno che non sia stato specificato un valore inferiore. Se il bucket contiene un numero di versioni superiore a tale limite, sarà necessario inviare una serie di richieste per recuperare un elenco di tutte le versioni. Questo processo di restituzione di risultati in "pagine" è chiamato *paginazione*.

Per illustrare il funzionamento della paginazione, gli esempi limitano ogni risposta a due versioni di un oggetto. Dopo aver recuperato la prima pagina di risultati, ogni esempio verifica se l'elenco delle versioni è troncato. In caso affermativo, l'esempio continua recuperando pagine fino al recupero di tutte le versioni. 

**Nota**  
Gli esempi seguenti operano anche con un bucket che non ha la funzione Controllo delle versioni abilitata o per gli oggetti che non hanno versioni specifiche. In questi casi Amazon S3 restituisce l'elenco di oggetti con la versione ID `null`.

 [Per informazioni sull'utilizzo di altri AWS SDKs, consulta il Developer Center.AWS](https://aws.amazon.com/code/) 

------
#### [ Java ]

Per istruzioni su come creare e testare un esempio funzionante, consulta [Getting Started](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/getting-started.html) nella AWS SDK per Java Developer Guide.

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.ListVersionsRequest;
import com.amazonaws.services.s3.model.S3VersionSummary;
import com.amazonaws.services.s3.model.VersionListing;

public class ListKeysVersioningEnabledBucket {

    public static void main(String[] args) {
        Regions clientRegion = Regions.DEFAULT_REGION;
        String bucketName = "*** Bucket name ***";

        try {
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .withCredentials(new ProfileCredentialsProvider())
                    .withRegion(clientRegion)
                    .build();

            // Retrieve the list of versions. If the bucket contains more versions
            // than the specified maximum number of results, Amazon S3 returns
            // one page of results per request.
            ListVersionsRequest request = new ListVersionsRequest()
                    .withBucketName(bucketName)
                    .withMaxResults(2);
            VersionListing versionListing = s3Client.listVersions(request);
            int numVersions = 0, numPages = 0;
            while (true) {
                numPages++;
                for (S3VersionSummary objectSummary : versionListing.getVersionSummaries()) {
                    System.out.printf("Retrieved object %s, version %s\n",
                            objectSummary.getKey(),
                            objectSummary.getVersionId());
                    numVersions++;
                }
                // Check whether there are more pages of versions to retrieve. If
                // there are, retrieve them. Otherwise, exit the loop.
                if (versionListing.isTruncated()) {
                    versionListing = s3Client.listNextBatchOfVersions(versionListing);
                } else {
                    break;
                }
            }
            System.out.println(numVersions + " object versions retrieved in " + numPages + " pages");
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }
}
```

------
#### [ .NET ]

Per informazioni sulla configurazione e l'esecuzione degli esempi di codice, consulta [Getting Started with the AWS SDK for .NET nella AWS SDK for](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) .NET *Developer Guide*. 

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class ListObjectsVersioningEnabledBucketTest
    {
        static string bucketName = "*** bucket name ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 s3Client;

        public static void Main(string[] args)
        {
            s3Client = new AmazonS3Client(bucketRegion);
            GetObjectListWithAllVersionsAsync().Wait();
        }

        static async Task GetObjectListWithAllVersionsAsync()
        {
            try
            {
                ListVersionsRequest request = new ListVersionsRequest()
                {
                    BucketName = bucketName,
                    // You can optionally specify key name prefix in the request
                    // if you want list of object versions of a specific object.

                    // For this example we limit response to return list of 2 versions.
                    MaxKeys = 2
                };
                do
                {
                    ListVersionsResponse response = await s3Client.ListVersionsAsync(request); 
                    // Process response.
                    foreach (S3ObjectVersion entry in response.Versions)
                    {
                        Console.WriteLine("key = {0} size = {1}",
                            entry.Key, entry.Size);
                    }

                    // If response is truncated, set the marker to get the next 
                    // set of keys.
                    if (response.IsTruncated)
                    {
                        request.KeyMarker = response.NextKeyMarker;
                        request.VersionIdMarker = response.NextVersionIdMarker;
                    }
                    else
                    {
                        request = null;
                    }
                } while (request != null);
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered on server. Message:'{0}' when writing an object", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
            }
        }
    }
}
```

------

## Utilizzo della REST API
<a name="ListingtheObjectsinaVersioningEnabledBucket"></a>

**Example - Un elenco di tutte le versioni degli oggetti di un bucket**  
Per visualizzare un elenco di tutte le versioni degli oggetti in un bucket, utilizzare la sottorisorsa `versions` in una richiesta `GET Bucket`. Amazon S3 può recuperare fino a 1.000 oggetti e ogni versione di oggetto è conteggiata interamente come oggetto. Quindi se un bucket contiene due chiavi (ad esempio, `photo.gif` e `picture.jpg`) e la prima ha 990 versioni mentre la seconda ne ha 400, con una singola richiesta si potrebbero recuperare tutte le 990 versioni `photo.gif` e solo le 10 più recenti di `picture.jpg`.  
Amazon S3 restituisce le versioni degli oggetti nell'ordine inverso rispetto a come sono state archiviate, ovvero l'ultima verrà restituita per prima.  
Nella richiesta `GET Bucket`, includere la sottorisorsa `versions`.  

```
1. GET /?versions HTTP/1.1
2. Host: bucketName.s3.amazonaws.com
3. Date: Wed, 28 Oct 2009 22:32:00 +0000
4. Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=
```

**Example - Recupero di tutte le versioni di una chiave**  
 Per recuperare un sottoinsieme di versioni di un oggetto, usa i parametri di richiesta per `GET Bucket`. Per ulteriori informazioni, consulta [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html).   

1. Impostare il parametro `prefix` sulla chiave dell'oggetto che si desidera recuperare.

1. Inviare una richiesta `GET Bucket` utilizzando la sottorisorsa `versions` e `prefix`.

   `GET /?versions&prefix=objectName HTTP/1.1`

**Example - Recupero di oggetti tramite un prefisso**  
Nell'esempio seguente vengono recuperati gli oggetti la cui chiave è o inizia con `myObject`.  

```
1. GET /?versions&prefix=myObject HTTP/1.1
2. Host: bucket.s3.amazonaws.com
3. Date: Wed, 28 Oct 2009 22:32:00 GMT
4. Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=
```
Si possono utilizzare altri parametri di richiesta per recuperare un sottoinsieme di tutte le versioni dell'oggetto. Per ulteriori informazioni, consulta [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html) in *Amazon Simple Storage Service API Reference* (Guida di riferimento per l'API di Amazon Simple Storage Service).

**Example - Recupero di un elenco di oggetti aggiuntivi se la risposta viene troncata**  
Se il numero di oggetti che possono essere restituiti in una richiesta `GET` supera il valore di `max-keys`, la risposta conterrà `<isTruncated>true</isTruncated>` e includerà la prima chiave (in `NextKeyMarker`) e il primo ID versione (in `NextVersionIdMarker`) che soddisfano la richiesta, ma che non sono stati restituiti. Si utilizzano i valori restituiti come posizione di inizio di una richiesta successiva per recuperare gli ulteriori oggetti che soddisfano la richiesta `GET`.   
Utilizzare la procedura seguente per recuperare gli ulteriori oggetti di un bucket che soddisfano la richiesta `GET Bucket versions` originaria. Per ulteriori informazioni su `key-marker`, `version-id-marker`, `NextKeyMarker` e `NextVersionIdMarker`, consulta la sezione [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html) nella *Documentazione di riferimento delle API di Amazon Simple Storage Service*.  
Di seguito sono riportate le risposte aggiuntive che soddisfano la richiesta `GET` originale:  
+ Impostare il valore di `key-marker` sulla chiave restituita in `NextKeyMarker` nella risposta precedente.
+ Impostare il valore di `version-id-marker` sull'ID versione restituito in `NextVersionIdMarker` nella risposta precedente.
+ Inviare una richiesta `GET Bucket versions` utilizzando `key-marker` e `version-id-marker`.

**Example - Recupero di oggetto che iniziano con la chiave e l'ID versione specificati**  

```
1. GET /?versions&key-marker=myObject&version-id-marker=298459348571 HTTP/1.1
2. Host: bucket.s3.amazonaws.com
3. Date: Wed, 28 Oct 2009 22:32:00 GMT
4. Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=
```

## Utilizzo del AWS CLI
<a name="list-obj-version-enabled-bucket-cli"></a>

Il comando seguente restituisce i metadati relativi a tutte le versioni degli oggetti in un bucket. 

```
aws s3api list-object-versions --bucket amzn-s3-demo-bucket1
```

Per ulteriori informazioni su `list-object-versions`, consulta [https://docs.aws.amazon.com/cli/latest/reference/s3api/list-object-versions.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-object-versions.html) nel *Riferimento ai comandi AWS CLI *.

# Recupero delle versioni degli oggetti da un bucket con funzione Controllo delle versioni abilitata
<a name="RetrievingObjectVersions"></a>

La funzione Controllo delle versioni in Amazon S3 è un modo per mantenere più varianti di un oggetto nello stesso bucket. Una richiesta `GET` semplice consente di recuperare la versione corrente di un oggetto. La figura seguente mostra come `GET` restituisce la versione corrente dell'oggetto, `photo.gif`.

![\[Illustrazione che mostra come GET restituisce la versione corrente dell'oggetto.\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/versioning_GET_NoVersionID.png)


Per recuperare una specifica versione occorre indicare l'ID versione. La figura seguente mostra una richiesta `GET versionId` che restituisce la versione specificata dell'oggetto (che non è necessariamente la versione corrente).

![\[Illustrazione che mostra come una richiesta GET versionId consenta di recuperare la versione specificata dell'oggetto.\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/versioning_GET_Versioned.png)


Puoi recuperare le versioni degli oggetti in Amazon S3 utilizzando la console o l'API AWS SDKs REST.

**Nota**  
 Per accedere a versioni di oggetti precedenti a 300 versioni, è necessario utilizzare la AWS CLI o l'URL dell'oggetto.

## Utilizzo della console S3
<a name="retrieving-object-versions"></a>

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nell'elenco **Buckets (Bucket)** scegliere il nome del bucket contenente l'oggetto.

1. Nell'elenco **Oggetti** scegliere il nome dell'oggetto.

1. Scegliere le **Versioni**.

   Amazon S3 mostra tutte le versioni per l'oggetto.

1. Selezionare la casella di controllo accanto all' **ID versione** per le versioni che si desidera recuperare.

1. Scegliere **Azioni**, scegliere **Scarica**e salvare l'oggetto.

È anche possibile visualizzare, scaricare ed eliminare le versioni degli oggetti nel pannello di panoramica sull'oggetto. Per ulteriori informazioni, consulta [Visualizzazione delle proprietà di un oggetto nella console di Amazon S3](view-object-properties.md).

**Importante**  
È possibile annullare l'eliminazione di un oggetto solo se è stato eliminato come ultima versione (corrente). Non è possibile annullare l'eliminazione della versione precedente di un oggetto eliminato. Per ulteriori informazioni, consulta [Conservazione di più versioni degli oggetti con Controllo delle versioni S3](Versioning.md).

## Utilizzando il AWS SDKs
<a name="retrieve-obj-version-sdks"></a>

Gli esempi per il caricamento di oggetti in bucket senza versione e con funzione Controllo delle versioni abilitata, sono gli stessi. Tuttavia, per i bucket con funzione Controllo delle versioni abilitata, Amazon S3 assegna un numero di versione. Negli altri casi il numero di versione è null.

Per esempi di download di oggetti utilizzando AWS SDKs Java, .NET e PHP, vedete [Download di oggetti](https://docs.aws.amazon.com/AmazonS3/latest/userguide/download-objects.html).

Per esempi di come elencare la versione degli oggetti utilizzata AWS SDKs per .NET e Rust, consulta [Elencare la versione degli oggetti in un bucket Amazon S3](https://docs.aws.amazon.com/code-library/latest/ug/s3_example_s3_ListObjectVersions_section.html).

## Utilizzo della REST API
<a name="retrieve-obj-version-rest"></a>

**Per recuperare una specifica versione di un oggetto**

1. Impostare `versionId` sull'ID versione dell'oggetto che si desidera recuperare.

1. Inviare una richiesta `GET Object versionId`.

**Example - Recupero di un oggetto con versione**  
La seguente richiesta recupera la versione `L4kqtJlcpXroDTDmpUMLUo` di `my-image.jpg`.  

```
1. GET /my-image.jpg?versionId=L4kqtJlcpXroDTDmpUMLUo HTTP/1.1
2. Host: bucket.s3.amazonaws.com
3. Date: Wed, 28 Oct 2009 22:32:00 GMT
4. Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=
```

È possibile recuperare solo i metadati di un oggetto (non il contenuto). Per informazioni, consulta [Recupero dei metadata di una versione di un oggetto](RetMetaOfObjVersion.md).

Per informazioni sul ripristino di una versione di un oggetto precedente, consulta [Ripristino di versioni precedenti](RestoringPreviousVersions.md).

# Recupero dei metadata di una versione di un oggetto
<a name="RetMetaOfObjVersion"></a>

Se si desidera recuperare solo i metadata di un oggetto (e non il suo contenuto), si utilizza l'operazione `HEAD`. Per impostazione predefinita si otterranno i metadata della versione più recente. Per recuperare i metadata di una specifica versione di oggetto si indicherà l'ID versione.

**Per recuperare i metadata di una versione di un oggetto**

1. Impostare `versionId` sull'ID versione dell'oggetto di cui si desidera recuperare i metadata.

1. Inviare una richiesta `HEAD Object versionId`.

**Example - Recupero dei metadata di un oggetto con versione**  
La richiesta seguente consente di recuperare i metadati della versione `3HL4kqCxf3vjVBH40Nrjfkd` di `my-image.jpg`.  

```
1. HEAD /my-image.jpg?versionId=3HL4kqCxf3vjVBH40Nrjfkd HTTP/1.1
2. Host: bucket.s3.amazonaws.com
3. Date: Wed, 28 Oct 2009 22:32:00 GMT
4. Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=
```

Di seguito è illustrata una risposta di esempio.

```
 1. HTTP/1.1 200 OK
 2. x-amz-id-2: ef8yU9AS1ed4OpIszj7UDNEHGran
 3. x-amz-request-id: 318BC8BC143432E5
 4. x-amz-version-id: 3HL4kqtJlcpXroDTDmjVBH40Nrjfkd
 5. Date: Wed, 28 Oct 2009 22:32:00 GMT
 6. Last-Modified: Sun, 1 Jan 2006 12:00:00 GMT
 7. ETag: "fba9dede5f27731c9771645a39863328"
 8. Content-Length: 434234
 9. Content-Type: text/plain
10. Connection: close
11. Server: AmazonS3
```

# Ripristino di versioni precedenti
<a name="RestoringPreviousVersions"></a>

Puoi utilizzare il controllo delle versioni per recuperare le versioni precedenti di un oggetto. Esistono due metodi per farlo:
+ Copiare una versione precedente dell'oggetto nello stesso bucket.

  La copia diventa la versione corrente dell'oggetto e vengono conservate tutte le sue versioni.
+ Eliminare definitivamente la versione corrente dell'oggetto.

  Così facendo, in effetti, la versione precedente diventa la versione corrente dell'oggetto.

Poiché vengono mantenute tutte le versioni dell'oggetto, è possibile trasformare una qualsiasi versione precedente nella versione corrente copiano una specifica versione dell'oggetto nello stesso bucket. Nella figura seguente l'oggetto di origine (ID = 111111) viene copiato nello stesso bucket. Amazon S3 fornisce un nuovo ID (88778877), che diventa la versione corrente dell'oggetto. In questo modo il bucket conterrà sia la versione originaria dell'oggetto (111111) che la sua copia (88778877). Per ulteriori informazioni su come ottenere una versione precedente e quindi caricarla per renderla la versione corrente, consulta [Recupero delle versioni degli oggetti da un bucket con funzione Controllo delle versioni abilitata](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RetrievingObjectVersions.html) e [Caricamento di oggetti](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html).

![\[Illustrazione che mostra come copiare una versione specifica di un oggetto nello stesso bucket per impostarla come versione corrente.\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/versioning_COPY2.png)


Una richiesta `GET` successiva recupera la versione 88778877.

La figura seguente mostra come l'eliminazione della versione corrente (121212) di un oggetto consente di lasciare la versione precedente (111111) come oggetto corrente. Per ulteriori informazioni sull'eliminazione di un oggetto, consulta [Eliminazione di un singolo oggetto](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-objects.html).

![\[Illustrazione che mostra come l'eliminazione della versione corrente di un oggetto mantenga la versione precedente come l'oggetto corrente.\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/versioning_COPY_delete2.png)


Una richiesta `GET` successiva recupera la versione 111111.

**Nota**  
Per ripristinare le versioni degli oggetti in batch, puoi [utilizzare l'operazione `CopyObject`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-copy-object.html). L'operazione `CopyObject` copia ogni oggetto specificato nel manifesto. Tuttavia tieni presente che gli oggetti non vengono necessariamente copiati nello stesso ordine in cui appaiono nel manifesto. Per i bucket con versione, se è importante mantenere l'ordine di versione corrente/non corrente, è necessario copiare prima tutte le versioni non correnti. Quindi, al termine del primo processo, copia le versioni correnti in un processo successivo.

## Come ripristinare le versioni precedenti degli oggetti
<a name="restoring-obj-version-version-enabled-bucket-examples"></a>

Per ulteriori indicazioni sul ripristino di oggetti eliminati, consulta [Come posso recuperare un oggetto Amazon S3 che è stato eliminato in un](https://repost.aws/knowledge-center/s3-undelete-configuration) bucket abilitato al rilascio di versioni? AWS re:Post nel Knowledge Center.

### Utilizzo della console S3
<a name="retrieving-object-versions"></a>

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nell'elenco **Buckets (Bucket)** scegliere il nome del bucket contenente l'oggetto.

1. Nell'elenco **Oggetti** scegliere il nome dell'oggetto.

1. Scegliere le **Versioni**.

   Amazon S3 mostra tutte le versioni per l'oggetto.

1. Selezionare la casella di controllo accanto all' **ID versione** per le versioni che si desidera recuperare.

1. Scegliere **Azioni**, scegliere **Scarica**e salvare l'oggetto.

È anche possibile visualizzare, scaricare ed eliminare le versioni degli oggetti nel pannello di panoramica sull'oggetto. Per ulteriori informazioni, consulta [Visualizzazione delle proprietà di un oggetto nella console di Amazon S3](view-object-properties.md).

**Importante**  
È possibile annullare l'eliminazione di un oggetto solo se è stato eliminato come ultima versione (corrente). Non è possibile annullare l'eliminazione della versione precedente di un oggetto eliminato. Per ulteriori informazioni, consulta [Conservazione di più versioni degli oggetti con Controllo delle versioni S3](Versioning.md).

### Utilizzando il AWS SDKs
<a name="restoring-obj-version-version-enabled-bucket-sdks"></a>

Per informazioni sull'utilizzo di altri AWS SDKs, consulta il [AWS Developer Center](https://aws.amazon.com/code/). 

------
#### [ Python ]

Il seguente esempio di codice Python ripristina la versione precedente di un oggetto con versione eliminando tutte le versioni che si sono succedute dopo la versione di rollback specificata. 

```
def rollback_object(bucket, object_key, version_id):
    """
    Rolls back an object to an earlier version by deleting all versions that
    occurred after the specified rollback version.

    Usage is shown in the usage_demo_single_object function at the end of this module.

    :param bucket: The bucket that holds the object to roll back.
    :param object_key: The object to roll back.
    :param version_id: The version ID to roll back to.
    """
    # Versions must be sorted by last_modified date because delete markers are
    # at the end of the list even when they are interspersed in time.
    versions = sorted(
        bucket.object_versions.filter(Prefix=object_key),
        key=attrgetter("last_modified"),
        reverse=True,
    )

    logger.debug(
        "Got versions:\n%s",
        "\n".join(
            [
                f"\t{version.version_id}, last modified {version.last_modified}"
                for version in versions
            ]
        ),
    )

    if version_id in [ver.version_id for ver in versions]:
        print(f"Rolling back to version {version_id}")
        for version in versions:
            if version.version_id != version_id:
                version.delete()
                print(f"Deleted version {version.version_id}")
            else:
                break

        print(f"Active version is now {bucket.Object(object_key).version_id}")
    else:
        raise KeyError(
            f"{version_id} was not found in the list of versions for " f"{object_key}."
        )
```

------

# Eliminazione di versioni di oggetti da un bucket con funzione Controllo delle versioni abilitata
<a name="DeletingObjectVersions"></a>

È possibile eliminare le versioni degli oggetti dai bucket Amazon S3 ogni volta che si desidera. Si possono anche definire regole di configurazione del ciclo di vita per oggetti con un ciclo di vita ben definito per fare in modo che Amazon S3 forzi la scadenza delle versioni correnti di un oggetto o che rimuova le versioni dell'oggetto non correnti in modo permanente. Se il bucket ha la funzionalità Controllo delle versioni abilitata o sospesa, le operazioni di configurazione del ciclo di vita agiscono nel modo seguente:
+ L'operazione `Expiration` si applica alla versione corrente dell'oggetto. Anziché eliminare la versione corrente dell'oggetto, Amazon S3 la conserva come versione non corrente aggiungendo un *contrassegno di eliminazione*, che quindi diventa la versione corrente.
+ L'operazione `NoncurrentVersionExpiration` si applica solo alle versioni non correnti di un oggetto e Amazon S3 rimuove queste versioni in modo permanente. Non è possibile ripristinare gli oggetti rimossi in modo permanente.

Per ulteriori informazioni sul ciclo di vita S3, consulta [Gestione del ciclo di vita degli oggetti](object-lifecycle-mgmt.md) e [Esempi di configurazioni del ciclo di vita S3](lifecycle-configuration-examples.md).

Per visualizzare il numero di versioni di oggetti correnti e non correnti presenti nei tuoi bucket, puoi utilizzare i parametri di Amazon S3 Storage Lens. S3 Storage Lens è una funzionalità di analisi dell'archiviazione su cloud che puoi utilizzare per avere una panoramica completa a livello di organizzazione sull'utilizzo e sulle attività relative all'archiviazione di oggetti. Per ulteriori informazioni, consulta la sezione [Utilizzo di S3 Storage Lens per ottimizzare i costi di archiviazione](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-lens-optimize-storage.html?icmpid=docs_s3_user_guide_DeletingObjectVersions.html). Per un elenco completo dei parametri, consulta [Glossario dei parametri di S3 Storage](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_metrics_glossary.html?icmpid=docs_s3_user_guide_replication.html).

**Nota**  
 A ogni versione archiviata e trasferita di un oggetto, incluse le versioni dell'oggetto non corrente, si applicano le tariffe Amazon S3 normali. Per ulteriori informazioni, consulta [Prezzi di Amazon S3](https://aws.amazon.com/s3/pricing/). 

## Eliminare casi di utilizzo delle richieste
<a name="delete-request-use-cases"></a>

Una richiesta `DELETE` può essere usata nei seguenti casi d'uso:
+ Quando la funzione Controllo delle versioni è abilitata, un semplice `DELETE` non può eliminare un oggetto in modo permanente. (Una richiesta `DELETE` semplice è una richiesta che non specifica un ID versione.) Invece di eliminare l'oggetto, Amazon S3 inserisce un contrassegno di eliminazione nel bucket e tale contrassegno diventa la versione corrente dell'oggetto, con un nuovo ID. 

  Quando si prova a utilizzare la funzione `GET` di un oggetto la cui versione corrente è un contrassegno di eliminazione, Amazon S3 si comporta come se l'oggetto fosse stato eliminato (anche se non è stato cancellato) e restituisce un errore 404. Per ulteriori informazioni, consulta [Utilizzo dei contrassegni di eliminazione](DeleteMarker.md).

  La figura seguente mostra una richiesta `DELETE` semplice che non rimuove effettivamente l'oggetto specificato. Anziché rimuovere l'oggetto, Amazon S3 inserisce un contrassegno di eliminazione.  
![\[Illustrazione che mostra l'inserimento di un contrassegno di eliminazione.\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/versioning_DELETE_versioningEnabled.png)
+ Per eliminare oggetti con versione in modo permanente occorre usare `DELETE Object versionId`.

  La figura seguente mostra una richiesta che l'eliminazione della versione specificata di un oggetto rimuove tale oggetto in modo permanente.  
![\[Diagramma che mostra in che modo DELETE Object versionId elimini definitivamente una versione specifica dell'oggetto.\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/versioning_DELETE_versioningEnabled2.png)

## Per eliminare le versioni degli oggetti
<a name="delete-object-version"></a>

Puoi eliminare le versioni degli oggetti in Amazon S3 utilizzando la console AWS SDKs, l'API REST o il. AWS Command Line Interface

### Utilizzo della console S3
<a name="deleting-object-versions"></a>

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nell'elenco **Buckets (Bucket)** scegliere il nome del bucket contenente l'oggetto.

1. Nell'elenco **Oggetti** scegliere il nome dell'oggetto.

1. Scegliere le **Versioni**.

   Amazon S3 mostra tutte le versioni per l'oggetto.

1. Seleziona la casella di controllo accanto a **Version ID** (ID versione) per le versioni che desideri recuperare.

1. Scegli **Elimina**.

1. In **Eliminare definitivamente gli oggetti? **, immettere **permanently delete**.
**avvertimento**  
Quando si elimina definitivamente una versione di un oggetto, l'azione non può essere annullata.

1. Scegliere **Delete objects (Elimina oggetti)**.

   Amazon S3 elimina la versione dell'oggetto.

### Utilizzando il AWS SDKs
<a name="delete-obj-version-version-enabled-bucket-sdks"></a>

Per esempi di eliminazione di oggetti utilizzando AWS SDKs per Java, .NET e PHP, vedere. [Eliminazione di oggetti Amazon S3](DeletingObjects.md) Gli esempi per l'eliminazione di oggetti in bucket senza versione e con funzione Controllo delle versioni abilitata sono gli stessi. Tuttavia, per i bucket con funzione Controllo delle versioni abilitata, Amazon S3 assegna un numero di versione. Negli altri casi il numero di versione è null. 

Per informazioni sull'utilizzo di altri AWS SDKs, consulta il [AWS Developer](https://aws.amazon.com/code/) Center. 

------
#### [ Python ]

Nell'esempio di codice Python seguente viene illustrata l'eliminazione permanente di un oggetto con versione eliminando tutte le sue versioni.

```
def permanently_delete_object(bucket, object_key):
    """
    Permanently deletes a versioned object by deleting all of its versions.

    Usage is shown in the usage_demo_single_object function at the end of this module.

    :param bucket: The bucket that contains the object.
    :param object_key: The object to delete.
    """
    try:
        bucket.object_versions.filter(Prefix=object_key).delete()
        logger.info("Permanently deleted all versions of object %s.", object_key)
    except ClientError:
        logger.exception("Couldn't delete all versions of %s.", object_key)
        raise
```

------

### Utilizzo della REST API
<a name="delete-obj-version-enabled-bucket-rest"></a>

**Per eliminare una versione specifica di un oggetto**
+ In una richiesta `DELETE`, specificare l'ID versione.

**Example - Eliminazione di una versione specifica**  
Nell'esempio seguente viene eliminata la versione `UIORUnfnd89493jJFJ` di `photo.gif`.  

```
1. DELETE /photo.gif?versionId=UIORUnfnd89493jJFJ HTTP/1.1 
2. Host: bucket.s3.amazonaws.com
3. Date: Wed, 12 Oct 2009 17:50:00 GMT
4. Authorization: AWS AKIAIOSFODNN7EXAMPLE:xQE0diMbLRepdf3YB+FIEXAMPLE=
5. Content-Type: text/plain
6. Content-Length: 0
```

### Utilizzando il AWS CLI
<a name="delete-obj-version-enabled-bucket-cli"></a>

Il comando seguente elimina un oggetto denominato test.txt da un bucket denominato `amzn-s3-demo-bucket1`. Per rimuovere una versione specifica di un oggetto, devi essere il proprietario del bucket e utilizzare la risorsa secondaria ID versione.

```
aws s3api delete-object --bucket amzn-s3-demo-bucket1 --key test.txt --version-id versionID
```

Per ulteriori informazioni su `delete-object`, consulta [https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html) nel *Riferimento ai comandi AWS CLI *.

Per ulteriori informazioni sull'eliminazione delle versioni degli oggetti, consulta gli argomenti riportati di seguito.
+ [Utilizzo dei contrassegni di eliminazione](DeleteMarker.md)
+ [Rimozione dei contrassegni di eliminazione per rendere corrente una versione precedente](ManagingDelMarkers.md#RemDelMarker)
+ [Eliminazione di un oggetto da un bucket con cancellazione MFA abilitata](UsingMFADelete.md)

# Utilizzo dei contrassegni di eliminazione
<a name="DeleteMarker"></a>

In Amazon S3, un *contrassegno di eliminazione* è il segnaposto (o contrassegno) di un oggetto con controllo delle versioni specificato in una richiesta `DELETE` semplice. Una richiesta `DELETE` semplice è una richiesta che non specifica un ID versione. Poiché l'oggetto si trova in un bucket con funzione Controllo delle versioni abilitata, non viene eliminato. Ma il contrassegno di eliminazione fa sì che Amazon S3 si comporti come se l'oggetto fosse stato eliminato. Puoi utilizzare una chiamata `DELETE` API di Amazon S3 su un contrassegno di eliminazione. A tale scopo, è necessario effettuare la `DELETE` richiesta utilizzando un utente o un ruolo AWS Identity and Access Management (IAM) con le autorizzazioni appropriate.

I contrassegni di eliminazione sono dotati di un *nome chiave* (o *chiave*) e di un ID versione, come qualsiasi altro oggetto. Tuttavia, differiscono da altri oggetti nei modi seguenti:
+ Un contrassegno di eliminazione non dispone di dati associati.
+ Un contrassegno di eliminazione non è associato a un valore della lista di controllo degli accessi (ACL).
+ Se invii una richiesta `GET` per un contrassegno di eliminazione, la richiesta `GET` non recupera nulla perché un contrassegno di eliminazione non contiene dati. In particolare, quando la richiesta `GET` non specifica un `versionId`, viene visualizzato un errore 404 (Not Found).

I contrassegni di eliminazione accumulano un addebito minimo per l'archiviazione in Amazon S3. Le dimensioni di storage di un contrassegno di eliminazione corrispondono a quelle del suo nome delle chiave. Un nome delle chiave è una sequenza di caratteri Unicode. La codifica UTF-8 per il nome chiave aggiunge da 1 a 4 byte di archiviazione al bucket per ogni carattere contenuto nel nome. I contrassegni di eliminazione sono archiviati nella classe di archiviazione S3 Standard. 

Per scoprire quanti contrassegni di eliminazione sono impostati e in quale classe di archiviazione sono archiviati, puoi usare Amazon S3 Storage Lens. Per ulteriori informazioni, consultare [Monitoraggio dell'attività e dell'utilizzo dello storage con Amazon S3 Storage Lens](storage_lens.md) e [Glossario dei parametri di Amazon S3 Storage Lens](storage_lens_metrics_glossary.md).

Per ulteriori informazioni sui nomi delle chiavi, consultare [Denominazione di oggetti Amazon S3](object-keys.md). Per informazioni sull'eliminazione di un contrassegno di eliminazione, consultare [Gestione dei contrassegni di eliminazione](ManagingDelMarkers.md). 

Solo Amazon S3 può creare un contrassegno di eliminazione e compie questa operazione ogni volta che si invia una richiesta `DeleteObject` relativa a un oggetto di un bucket con funzione Controllo delle versioni abilitata o sospesa. L'oggetto specificato nella richiesta `DELETE` non viene effettivamente eliminato. Invece il contrassegno di eliminazione diventa la versione corrente dell'oggetto Il nome delle chiave dell'oggetto (o chiave) diventa la chiave del contrassegno di eliminazione. 

Quando ottieni un oggetto senza specificare un `versionId` nella richiesta, se la versione corrente è un contrassegno di eliminazione, Amazon S3 risponde con quanto segue:
+ Un errore 404 (Not Found)
+ Un'intestazione di risposta, `x-amz-delete-marker: true`

Quando ottieni un oggetto specificando un `versionId` nella richiesta, se la versione specificata è un contrassegno di eliminazione, Amazon S3 risponde con quanto segue:
+ Un errore di tipo 405 (metodo non concesso)
+ Un'intestazione di risposta, `x-amz-delete-marker: true`
+ Un'intestazione di risposta, `Last-Modified: timestamp` (solo quando si utilizzano le operazioni [HeadObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)o l'[GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)API)

L'intestazione della risposta `x-amz-delete-marker: true` indica che l'oggetto a cui è stato effettuato l'accesso è un contrassegno di eliminazione. Questa intestazione della risposta non restituisce mai `false`, perché quando il valore è `false`, la versione corrente o specificata dell'oggetto non è un indicatore di eliminazione.

L'intestazione della risposta `Last-Modified` fornisce l'ora di creazione dei contrassegni di eliminazione.

La figura seguente mostra come una chiamata API `GetObject` su un oggetto la cui versione corrente è un contrassegno di eliminazione risponde con un errore 404 (Not Found) e l'intestazione della risposta include `x-amz-delete-marker: true`.

![\[Illustrazione che mostra una chiamata GetObject per un contrassegno di eliminazione che restituisce un errore 404 (Not Found).\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/versioning_DELETE_NoObjectFound.png)


Se effettui una chiamata `GetObject` su un oggetto specificando un `versionId` nella richiesta e se la versione specificata è un contrassegno di eliminazione, Amazon S3 risponde con un errore 405 (Method Not Allowed) e le intestazioni della risposta includono `x-amz-delete-marker: true` e `Last-Modified: timestamp`.

![\[Illustrazione che mostra una chiamata GetObject per un contrassegno di eliminazione che restituisce un errore 405 (Method Not Allowed).\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/versioning_DELETE_NoObjectFound_405.png)


Anche se sovrascritti, gli indicatori di eliminazione rimangono nelle versioni degli oggetti. L’unico modo per ottenere l’elenco degli indicatori di eliminazione (e di altre versioni di un oggetto) è utilizzare una richiesta [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectVersions.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectVersions.html). È possibile effettuare questa richiesta nella Console di gestione AWS elencando gli oggetti di un bucket per uso generico e selezionando **Mostra versioni**. Per ulteriori informazioni, consulta [Elenchi di oggetti in un bucket che supporta la funzione Controllo delle versioni](list-obj-version-enabled-bucket.md).

La figura seguente mostra che una richiesta [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html) o [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html) non restituisce gli oggetti la cui versione corrente è un contrassegno di eliminazione.

![\[Illustrazione che mostra come una chiamata ListObjectsV2 o ListObjects non restituisce alcun contrassegno di eliminazione.\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/versioning_GETBucketwithDeleteMarkers.png)


# Gestione dei contrassegni di eliminazione
<a name="ManagingDelMarkers"></a>

## Configurazione del ciclo di vita per ripulire automaticamente i contrassegni di eliminazione scaduti
<a name="LifecycleDelMarker"></a>

Un contrassegno di eliminazione oggetto scaduto è un elemento in cui tutte le versioni dell'oggetto vengono eliminate e rimane solo un singolo contrassegno di eliminazione. Se la configurazione relativa al ciclo di vita è impostata per eliminare le versioni correnti oppure l'opzione `ExpiredObjectDeleteMarker` è impostata in modo esplicito, Amazon S3 rimuove il contrassegno di eliminazione dell'oggetto scaduto. Per un esempio, consulta [Rimozione dei contrassegni di eliminazione degli oggetti scaduti in un bucket con il controllo delle versioni abilitato](lifecycle-configuration-examples.md#lifecycle-config-conceptual-ex7). 

## Rimozione dei contrassegni di eliminazione per rendere corrente una versione precedente
<a name="RemDelMarker"></a>

Quando si elimina un oggetto in un bucket che supporta la funzione Controllo delle versioni, tutte le versioni rimangono nel bucket e Amazon S3 crea un contrassegno di eliminazione per l'oggetto. Per annullare l'eliminazione dell'oggetto, è necessario eliminare il contrassegno di eliminazione. Per ulteriori informazioni sulla funzione Controllo delle versioni e sui contrassegni di eliminazione, consulta [Conservazione di più versioni degli oggetti con Controllo delle versioni S3](Versioning.md).

Per eliminare definitivamente un contrassegno di eliminazione occorre includere il suo ID versione nella richiesta `DeleteObject versionId`. La figura seguente mostra una richiesta `DeleteObject versionId` che rimuove definitivamente un contrassegno di eliminazione.

![\[Illustrazione che mostra l'eliminazione di un contrassegno di eliminazione utilizzando il relativo ID versione.\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/versioning_DELETE_deleteMarkerVersioned.png)


L'effetto della rimozione del contrassegno di eliminazione è che una richiesta `GET` semplice non recupererà l'ID versione corrente (121212) dell'oggetto. 

**Nota**  
Se si utilizza una richiesta `DeleteObject` per eliminare un contrassegno di eliminazione (senza specificare l'ID versione del contrassegno), Amazon S3 non elimina il contrassegno, ma `PUTs` inserisce un altro contrassegno di eliminazione.

Per rimuovere un contrassegno di eliminazione con un ID di versione `NULL`, è necessario passare il `NULL` come ID di versione nella richiesta `DeleteObject`. La figura seguente mostra come una semplice richiesta `DeleteObject` effettuata senza un ID di versione, in cui la versione corrente è un marker di eliminazione, non rimuove nulla, ma aggiunge invece un marker di eliminazione ulteriore con un ID di versione univoco (7498372).

![\[Illustrazione che mostra l'eliminazione di un contrassegno di eliminazione utilizzando un ID versione NULL.\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/versioning_DELETE_deleteMarker.png)


## Utilizzo della console S3
<a name="undelete-objects"></a>

Utilizzare la seguente procedura per recuperare gli oggetti eliminati che non sono cartelle dal bucket S3, inclusi gli oggetti che si trovano all'interno di tali cartelle. 

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nell'elenco **Bucket** scegli il nome del bucket desiderato.

1. Per visualizzare un elenco delle **versioni** degli oggetti nel bucket, scegliere l'opzione **List versions (Elenca versioni)**. Verranno visualizzati i contrassegni di eliminazione degli oggetti eliminati. 

   

1. Per annullare l'eliminazione di un oggetto, è necessario eliminare il contrassegno di eliminazione. Selezionare la casella di controllo accanto al **contrassegno di eliminazione** dell'oggetto da recuperare, quindi scegliere **Delete (Elimina)**.

1. Conferma l'eliminazione nella pagina **Delete objects (Elimina oggetti)** .

   1. In **Permanently delete objects?** (Eliminare definitivamente gli oggetti?), specifica **permanently delete**.

   1. Scegliere **Delete objects (Elimina oggetti)**.

**Nota**  
Non puoi utilizzare la console di Amazon S3 per annullare l'eliminazione delle cartelle. È necessario utilizzare il AWS CLI o SDK. Per gli esempi, consulta [Come posso ripristinare un oggetto Amazon S3 eliminato da un bucket con il controllo delle versioni abilitato?](https://aws.amazon.com/premiumsupport/knowledge-center/s3-undelete-configuration/) nel Knowledge Center di AWS .

## Utilizzo di REST API
<a name="delete-marker-rest-api"></a>

**Per rimuovere definitivamente un contrassegno di eliminazione**

1. Impostare `versionId` sull'ID versione del contrassegno di eliminazione che si desidera rimuovere.

1. Inviare una richiesta `DELETE Object versionId`.

**Example - Rimozione di un contrassegno di eliminazione**  
Il seguente esempio consente di rimuovere il contrassegno di eliminazione della versione budget 4857693 di `photo.gif`.  

```
1. DELETE /photo.gif?versionId=4857693 HTTP/1.1
2. Host: bucket.s3.amazonaws.com
3. Date: Wed, 28 Oct 2009 22:32:00 GMT
4. Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=
```

Quando si elimina un contrassegno di eliminazione, Amazon S3 include nella risposta:

```
1. 204 NoContent 
2. x-amz-version-id: versionID 
3. x-amz-delete-marker: true
```

## Usando il AWS SDKs
<a name="remove-delete-marker-examples-sdk"></a>

Per informazioni sull'utilizzo di altri AWS SDKs, consulta il [AWS Developer Center](https://aws.amazon.com/code/).

------
#### [ Python ]

Nell'esempio di codice Python seguente viene illustrato come rimuovere un marker di eliminazione da un oggetto, rendendo quindi la versione non corrente più recente la versione corrente dell'oggetto.

```
def revive_object(bucket, object_key):
    """
    Revives a versioned object that was deleted by removing the object's active
    delete marker.
    A versioned object presents as deleted when its latest version is a delete marker.
    By removing the delete marker, we make the previous version the latest version
    and the object then presents as *not* deleted.

    Usage is shown in the usage_demo_single_object function at the end of this module.

    :param bucket: The bucket that contains the object.
    :param object_key: The object to revive.
    """
    # Get the latest version for the object.
    response = s3.meta.client.list_object_versions(
        Bucket=bucket.name, Prefix=object_key, MaxKeys=1
    )

    if "DeleteMarkers" in response:
        latest_version = response["DeleteMarkers"][0]
        if latest_version["IsLatest"]:
            logger.info(
                "Object %s was indeed deleted on %s. Let's revive it.",
                object_key,
                latest_version["LastModified"],
            )
            obj = bucket.Object(object_key)
            obj.Version(latest_version["VersionId"]).delete()
            logger.info(
                "Revived %s, active version is now %s  with body '%s'",
                object_key,
                obj.version_id,
                obj.get()["Body"].read(),
            )
        else:
            logger.warning(
                "Delete marker is not the latest version for %s!", object_key
            )
    elif "Versions" in response:
        logger.warning("Got an active version for %s, nothing to do.", object_key)
    else:
        logger.error("Couldn't get any version info for %s.", object_key)
```

------

# Eliminazione di un oggetto da un bucket con cancellazione MFA abilitata
<a name="UsingMFADelete"></a>

Quando configuri l’eliminazione MFA, solo l’utente root può eliminare definitivamente le versioni degli oggetti o modificare la configurazione del controllo delle versioni sul bucket S3. È necessario utilizzare un dispositivo MFA per autenticare l’utente root a eseguire l’azione di eliminazione.

Se la configurazione della funzione Controllo delle versioni comprende l'abilitazione della cancellazione MFA, il proprietario del bucket deve includere l'intestazione `x-amz-mfa` nelle richieste per eliminare definitivamente una versione dell'oggetto o per cambiare lo stato della funzione Controllo delle versioni del bucket. Le richieste che includono `x-amz-mfa` devono utilizzare l'HTTPS.

Il valore dell'intestazione è dato dalla concatenazione del numero di serie del dispositivo di autenticazione, uno spazio e il codice di autenticazione visualizzato sul dispositivo. Se non si include questa intestazione di richiesta, la richiesta ha esito negativo.

Quando si utilizza, AWS CLI includi le stesse informazioni del valore del `mfa` parametro.

Per ulteriori informazioni sui dispositivi di autenticazione, vedere [Autenticazione a più fattori](https://aws.amazon.com/iam/details/mfa/).

Per ulteriori informazioni sull'abilitazione della cancellazione MFA;, consultare [Configurazione dell'eliminazione di MFA](MultiFactorAuthenticationDelete.md).

**Nota**  
L’eliminazione di un oggetto in un bucket con controllo delle versioni che è abilitato all’eliminazione MFA non è disponibile tramite la Console di gestione AWS.

## Utilizzando il AWS CLI
<a name="MFADeleteCLI"></a>

Utilizza il comando seguente per eliminare un oggetto in un bucket con controllo delle versioni che è abilitato all’eliminazione MFA. Quando si utilizza il seguente esempio di comando, sostituisci `user input placeholders` con le tue informazioni.

```
 aws s3api delete-object --bucket amzn-s3-demo-bucket --key OBJECT-KEY --version-id "VERSION ID" --mfa "MFA_DEVICE_SERIAL_NUMBER MFA_DEVICE_CODE"						
```

## Utilizzo della REST API
<a name="MFADeleteAPI"></a>

L'esempio seguente mostra come eliminare `my-image.jpg` (con la versione specificata), che risiede in un bucket configurato con l'eliminazione MFA abilitata. 

Per ulteriori informazioni, consulta [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html) nella Guida di riferimento delle API di Amazon Simple Storage Service.

```
1. DELETE /my-image.jpg?versionId=3HL4kqCxf3vjVBH40Nrjfkd HTTPS/1.1
2. Host: bucketName.s3.amazonaws.com
3. x-amz-mfa: 20899872 301749
4. Date: Wed, 28 Oct 2009 22:32:00 GMT
5. Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=
```

# Configurazione delle autorizzazioni degli oggetti con versione
<a name="VersionedObjectPermissionsandACLs"></a>

Le autorizzazioni per gli oggetti in Amazon S3 sono impostate a livello di versione. Ogni versione ha il proprio proprietario dell'oggetto. Chi crea Account AWS la versione dell'oggetto è il proprietario. È quindi possibile definire autorizzazioni diverse per versioni differenti dello stesso oggetto. A tale scopo occorre specificare l'ID versione dell'oggetto le cui autorizzazioni si desidera impostare in una richiesta `PUT Object versionId acl`. Per una descrizione dettagliata e istruzioni sull'uso ACLs, vedere[Identity and Access Management per Amazon S3](security-iam.md).

**Example - Configurazione delle autorizzazioni di un oggetto con versione**  
La seguente richiesta imposta l'autorizzazione del beneficiario, con ID utente canonico, `FULL_CONTROL` su on the key*b4bf1b36f9716f094c3079dcf5ac9982d4f2847de46204d47448bc557fb5ac2a*, version ID`my-image.jpg`,. `3HL4kqtJvjVBH40Nrjfkd`  

```
 1. PUT /my-image.jpg?acl&versionId=3HL4kqtJvjVBH40Nrjfkd HTTP/1.1
 2. Host: bucket.s3.amazonaws.com
 3. Date: Wed, 28 Oct 2009 22:32:00 GMT
 4. Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=
 5. Content-Length: 124
 6.  
 7. <AccessControlPolicy>
 8.   <Owner>
 9.     <ID>75cc57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a</ID>
10.   </Owner>
11.   <AccessControlList>
12.     <Grant>
13.       <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">
14.         <ID>a9a7b886d6fd24a52fe8ca5bef65f89a64e0193f23000e241bf9b1c61be666e9</ID>
15.       </Grantee>
16.       <Permission>FULL_CONTROL</Permission>
17.     </Grant>
18.   </AccessControlList>
19.   </AccessControlPolicy>
```

Analogamente, per conoscere le autorizzazioni della versione specifica di un oggetto, è necessario indicarne l'ID versione in una richiesta `GET Object versionId acl`. Includere l'ID versione è necessario perché, per impostazione predefinita, `GET Object acl` restituisce le autorizzazioni della versione corrente dell'oggetto. 

**Example - Recupero delle autorizzazioni della versione specificata di un oggetto**  
Nell'esempio seguente Amazon S3 restituisce le autorizzazioni per la chiave, `my-image.jpg`, ID versione, `DVBH40Nr8X8gUMLUo`.  

```
1. GET /my-image.jpg?versionId=DVBH40Nr8X8gUMLUo&acl HTTP/1.1
2. Host: bucket.s3.amazonaws.com
3. Date: Wed, 28 Oct 2009 22:32:00 GMT
4. Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU
```

Per ulteriori informazioni, consulta [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGETacl.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGETacl.html) in *Amazon Simple Storage Service API Reference* (Guida di riferimento per l'API di Amazon Simple Storage Service).

# Utilizzo di oggetti di un bucket con funzione Controllo delle versioni sospesa
<a name="VersionSuspendedBehavior"></a>

In Amazon S3 è possibile sospendere la funzione Controllo delle versioni per non accumulare nuove versioni dello stesso oggetto in un bucket. Potrebbe essere necessario farlo perché si desidera solo una singola versione di un oggetto in un bucket. In alternativa, potrebbe esservi la necessità di non voler accumulare addebiti per più versioni. 

Quando si sospende la funzione Controllo delle versioni, gli oggetti esistenti nel bucket non si modificano. Ciò che cambia è il modo in cui Amazon S3 gestirà gli oggetti delle richieste future. Negli argomenti di questa sezione vengono illustrate le varie operazioni degli oggetti in un bucket con la funzione Controllo delle versioni sospesa, tra cui l'aggiunta, il recupero e l'eliminazione di oggetti.

Per ulteriori informazioni sulla funzione Controllo delle versioni S3, consulta [Conservazione di più versioni degli oggetti con Controllo delle versioni S3](Versioning.md). Per ulteriori informazioni sul recupero delle versioni degli oggetti, consulta la sezione [Recupero delle versioni degli oggetti da un bucket con funzione Controllo delle versioni abilitata](RetrievingObjectVersions.md).

**Topics**
+ [

# Aggiunta di oggetti a bucket con funzione Controllo delle versioni sospesa
](AddingObjectstoVersionSuspendedBuckets.md)
+ [

# Recupero di oggetti da bucket con funzioneControllo delle versioni sospesa
](RetrievingObjectsfromVersioningSuspendedBuckets.md)
+ [

# Eliminazione di oggetti da bucket con funzione Controllo delle versioni sospesa
](DeletingObjectsfromVersioningSuspendedBuckets.md)

# Aggiunta di oggetti a bucket con funzione Controllo delle versioni sospesa
<a name="AddingObjectstoVersionSuspendedBuckets"></a>

Puoi aggiungere oggetti a bucket con la funzione Controllo delle versioni sospesa in Amazon S3 per creare l'oggetto con ID versione null o sovrascrivere una qualsiasi versione dell'oggetto con un ID versione corrispondente.

Dopo la sospensione della funzione Controllo delle versioni di un bucket, Amazon S3 aggiungerà automaticamente un ID versione `null` a ogni oggetto archiviato successivamente (utilizzando `PUT`, `POST` o `CopyObject`) nel bucket.

La figura seguente mostra l'aggiunta dell'ID versione `null` a un oggetto da parte di Amazon S3 quando l'oggetto viene aggiunto a un bucket con funzione Controllo delle versioni abilitata.

![\[Amazon S3 aggiunge l'ID versione null a un oggetto grafico.\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/versioning_PUT_versionSuspended.png)


Se nel bucket è già presente una versione null e si aggiunge un altro oggetto con la stessa chiave, l'oggetto così aggiunto sovrascrive la versione null originaria. 

Se il bucket contiene oggetti con versione, la versione della funzione `PUT` diventa quella corrente dell'oggetto. La figura seguente mostra come l'aggiunta di un oggetto a un bucket contenente oggetti con versione non sovrascrive l'oggetto già presente nel bucket. 

In questo caso, la versione 111111 risiedeva già nel bucket. Amazon S3 aggiunge un ID versione null all'oggetto da aggiungere e lo archivia nel bucket. La versione 111111 risulta ora sovrascritta.

![\[Amazon S3 aggiunge l'ID di versione null a un oggetto senza sovrascrivere l'immagine della versione 111111.\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/versioning_PUT_versionSuspended3.png)


Se nel bucket è già presente una versione null, tale versione viene sovrascritta, come mostrato nell'illustrazione seguente.

![\[Amazon S3 aggiunge l'ID versione null a un oggetto sovrascrivendo la grafica del contenuto originale.\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/versioning_PUT_versionSuspended4.png)


Sebbene la chiave e l'ID (`null`) della versione null siano identici prima e dopo la richiesta `PUT`, i contenuti della versione null inizialmente memorizzati nel bucket vengono sostituiti da quelli dell'oggetto `PUT` per l'inserimento nel bucket.

# Recupero di oggetti da bucket con funzioneControllo delle versioni sospesa
<a name="RetrievingObjectsfromVersioningSuspendedBuckets"></a>

Le richieste `GET Object` restituiscono la versione corrente di un oggetto indipendentemente dal fatto che la funzione Controllo delle versioni del bucket sia stata abilitata o meno. La figura seguente mostra come un semplice `GET` restituisce la versione corrente di un oggetto.

![\[Illustrazione che mostra come un semplice GET restituisce la versione corrente di un oggetto.\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/versioning_GET_suspended.png)


# Eliminazione di oggetti da bucket con funzione Controllo delle versioni sospesa
<a name="DeletingObjectsfromVersioningSuspendedBuckets"></a>

È possibile eliminare oggetti da bucket con la funzione Controllo delle versioni sospesa per rimuovere un oggetto con ID versione null.

Se la funzione Controllo delle versioni è sospesa per un bucket, una richiesta `DELETE`:
+ Può rimuovere solo gli oggetti con ID versione `null`.
+ Non rimuove alcun oggetto se non è presente una versione null dell'oggetto nel bucket.
+ Inserisce un contrassegno di eliminazione nel bucket.

Se il controllo delle versioni del bucket è sospeso, l'operazione rimuove l'oggetto con un valore `versionId` null. Se è presente un ID versione, Amazon S3 inserisce un contrassegno di eliminazione che diventa la versione corrente dell'oggetto. La figura seguente mostra come una semplice richiesta `DELETE` rimuove una versione null e Amazon S3 inserisce un contrassegno di eliminazione al suo posto con ID versione `null`.

![\[Illustrazione che mostra una semplice eliminazione per rimuovere un oggetto con ID versione NULL.\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/versioning_DELETE_versioningSuspended.png)


Per eliminare definitivamente un oggetto con `versionId`, è necessario includere il valore `versionId` dell'oggetto nella richiesta. Poiché un contrassegno di eliminazione non include alcun contenuto, il contenuto della versione `null` viene perso quando viene sostituito da un contrassegno di eliminazione.

La figura seguente mostra un bucket che non contiene versioni null. In questo caso `DELETE` non rimuove nulla. Anziché rimuovere l'oggetto, Amazon S3 inserisce semplicemente un contrassegno di eliminazione.

![\[Illustrazione che mostra l'inserimento di un contrassegno di eliminazione.\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/versioning_DELETE_versioningSuspendedNoNull.png)


Anche in un bucket con versione sospesa, il proprietario del bucket può eliminare definitivamente una versione specificata includendo l'ID della versione nella richiesta, a meno che le autorizzazioni per la `DELETE` richiesta non siano state esplicitamente negate. `DELETE` Ad esempio, per negare l'eliminazione di qualsiasi oggetto con un ID di `null` versione, è necessario negare esplicitamente le autorizzazioni and. `s3:DeleteObject` `s3:DeleteObjectVersions`

La figura seguente mostra che l'eliminazione di una versione specificata di un oggetto rimuove tale oggetto in modo permanente. Solo il proprietario del bucket può eliminare la versione specificata di un oggetto.

![\[Illustrazione che mostra l'eliminazione permanente di un oggetto con un ID versione specificato.\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/versioning_DELETE_versioningEnabled2.png)


# Risoluzione dei problemi relativi al controllo delle versioni
<a name="troubleshooting-versioning"></a>

I seguenti argomenti sono utili per risolvere alcuni problemi comuni relativi alla funzione Controllo delle versioni di Amazon S3.

**Topics**
+ [

## Desidero recuperare oggetti che sono stati eliminati per errore in un bucket in cui la funzione Controllo delle versioni è abilitata
](#recover-objects)
+ [

## Voglio eliminare definitivamente gli oggetti con il controllo delle versioni abilitato
](#delete-objects-permanent)
+ [

## Sto riscontrando un peggioramento delle prestazioni dopo aver abilitato il controllo delle versioni del bucket
](#performance-degradation)

## Desidero recuperare oggetti che sono stati eliminati per errore in un bucket in cui la funzione Controllo delle versioni è abilitata
<a name="recover-objects"></a>

In generale, quando le versioni degli oggetti vengono eliminate dai bucket S3, Amazon S3 non può più recuperarle. Tuttavia, se hai abilitato la funzione S3 Controllo delle versioni sul tuo bucket S3, una richiesta `DELETE` che non specifica un ID di versione non può eliminare definitivamente un oggetto. Viene invece aggiunto un contrassegno di eliminazione come segnaposto. Questo contrassegno di eliminazione diventa la versione corrente dell'oggetto. 

Per verificare se gli oggetti eliminati sono rimossi definitivamente o temporaneamente (sostituiti da un contrassegno di eliminazione), procedi come segue: 

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel pannello di navigazione a sinistra, scegli **Buckets** (Bucket).

1. Nell'elenco **Buckets (Bucket)** scegliere il nome del bucket contenente l'oggetto.

1. Nell'elenco **Oggetti**, attiva il controllo **Mostra versioni** a destra della barra di ricerca, quindi cerca l'oggetto eliminato nella barra di ricerca. Questo controllo è disponibile solo se la funzione Controllo delle versioni è stata precedentemente abilitata nel bucket.

   Puoi anche utilizzare [S3 Inventory per cercare gli oggetti eliminati](storage-inventory.md#storage-inventory-contents).

1. Se non riesci a trovare l'oggetto dopo aver attivato il controllo **Mostra versioni** o dopo avere creato un report di inventario non riesci a trovare il [contrassegno di eliminazione](DeleteMarker.md) dell'oggetto, significa che l'eliminazione è permanente e l'oggetto non può più essere recuperato.



Puoi anche verificare lo stato di un oggetto eliminato utilizzando l'operazione `HeadObject` API di AWS Command Line Interface (AWS CLI). A tale scopo, utilizza il comando `head-object` e sostituisci `user input placeholders` con le tue informazioni. 

`aws s3api head-object --bucket amzn-s3-demo-bucket --key index.html`

Se esegui il comando `head-object` su un oggetto con il controllo delle versioni abilitato la cui versione corrente è un contrassegno di cancellazione, riceverai un errore 404 Non trovato. Esempio: 

Si è verificato un errore (404) durante la chiamata dell' HeadObject operazione: Not Found

Se esegui il comando `head-object` su un oggetto con il controllo delle versioni abilitato e fornisci l'ID versione dell'oggetto, Amazon S3 recupera i metadati dell'oggetto, a conferma che l'oggetto esiste ancora e che non è stato eliminato definitivamente.

`aws s3api head-object --bucket amzn-s3-demo-bucket --key index.html --version-id versionID`

```
{
"AcceptRanges": "bytes",
"ContentType": "text/html",
"LastModified": "Thu, 16 Apr 2015 18:19:14 GMT",
"ContentLength": 77,
"VersionId": "Zg5HyL7m.eZU9iM7AVlJkrqAiE.0UG4q",
"ETag": "\"30a6ec7e1a9ad79c203d05a589c8b400\"",
"Metadata": {}
}
```

Se l'oggetto viene trovato e la relativa versione più recente è un contrassegno di eliminazione, significa che la versione precedente dell'oggetto esiste ancora. Poiché il contrassegno di eliminazione corrisponde alla versione corrente dell'oggetto, è possibile recuperare l'oggetto eliminando il contrassegno di eliminazione. 

Dopo aver rimosso definitivamente il contrassegno di eliminazione, la seconda versione più recente dell'oggetto diventa la versione corrente, rendendolo nuovamente disponibile. Per una rappresentazione visiva di come gli oggetti vengono recuperati, consulta [Rimozione dei contrassegni di eliminazione](ManagingDelMarkers.md#RemDelMarker).

Per rimuovere una versione specifica di un oggetto, devi essere il proprietario del bucket. Per eliminare definitivamente un contrassegno di eliminazione occorre includere il suo ID versione nella richiesta `DeleteObject`. Per eliminare il contrassegno di eliminazione, usa il seguente comando e sostituisci `user input placeholders` con le tue informazioni: 

****  
`aws s3api delete-object --bucket amzn-s3-demo-bucket --key index.html --version-id versionID`

Per ulteriori informazioni sul comando `delete-object`, consulta [https://docs.aws.amazon.com//cli/latest/reference/s3api/delete-object.html](https://docs.aws.amazon.com//cli/latest/reference/s3api/delete-object.html) in the *Guida di riferimento ai comandi della AWS CLI *. Per informazioni sull'eliminazione definitiva dei contrassegni di eliminazione, consulta [Gestione dei contrassegni di eliminazione](ManagingDelMarkers.md).

## Voglio eliminare definitivamente gli oggetti con il controllo delle versioni abilitato
<a name="delete-objects-permanent"></a>

In un bucket con la funzione Controllo delle versioni abilitata, una richiesta `DELETE` senza un ID versione non può eliminare un oggetto definitivamente. Questo tipo di richiesta inserisce invece un contrassegno di eliminazione.

Per eliminare oggetti con la funzione Controllo delle versioni abilitata in modo permanente, puoi scegliere tra i seguenti metodi:
+ Crea una regola del ciclo di vita S3 per eliminare definitivamente le versioni non correnti. Per eliminare in modo definitivo le versioni non correnti, in **Elimina in modo definitivo le versioni non correnti degli oggetti**, specifica il numero di giorni nel campo **Numero di giorni dopo il quale gli oggetti diventano non correnti**. Facoltativamente puoi specificare il numero di versioni più recenti da mantenere immettendo un valore nel campo **Number of newer versions to retain** (Numero di versioni più recenti da mantenere). Per ulteriori informazioni sulla creazione di questa regola, consulta l'argomento relativo all'[impostazione di una configurazione del ciclo di vita S3](how-to-set-lifecycle-configuration-intro.md).
+ Elimina una versione specificata includendo l'ID versione nella richiesta `DELETE`. Per ulteriori informazioni, consulta l'argomento relativo alla [procedura di eliminazione definitiva degli oggetti con controllo delle versioni abilitata](DeletingObjectVersions.md#delete-request-use-cases).
+ Crea una regola del ciclo di vita per far scadere le versioni correnti. Per definire la scadenza delle versioni correnti degli oggetti, seleziona **Scadenza versioni correnti degli oggetti** e aggiungi un numero in **Giorni dopo la creazione degli oggetti**. Per ulteriori informazioni sulla creazione di questa regola del ciclo di vita, consulta l'argomento relativo all'[impostazione di una configurazione del ciclo di vita S3](how-to-set-lifecycle-configuration-intro.md).
+ Per eliminare definitivamente tutti gli oggetti con il controllo delle versioni abilitato e i relativi contrassegni di eliminazione, crea due regole del ciclo di vita: una per far scadere le versioni correnti ed eliminare definitivamente le versioni non correnti degli oggetti e l'altra per eliminare i contrassegni di eliminazione degli oggetti scaduti.

In un bucket con il controllo delle versioni abilitato, una richiesta `DELETE` che non specifica un ID versione può rimuovere solo gli oggetti con un ID versione `NULL`. Se l'oggetto è stato caricato quando il controllo delle versioni era abilitato, una richiesta `DELETE` che non specifica un ID versione crea un contrassegno di eliminazione per tale oggetto.

**Nota**  
Per i bucket con la funzione S3 Blocco oggetti abilitata, una richiesta oggetto `DELETE` con un ID versione dell'oggetto protetto causa un errore 403 Accesso negato. Una richiesta oggetto `DELETE` senza un ID versione aggiunge un contrassegno di eliminazione come versione più recente dell'oggetto con una risposta 200 OK. Gli oggetti protetti dalla funzionalità Blocco oggetti non possono essere eliminati definitivamente finché i relativi periodi di conservazione e blocchi a fini legali non vengono rimossi. Per ulteriori informazioni, consulta [Come funziona il blocco oggetti S3](object-lock.md#object-lock-overview).

## Sto riscontrando un peggioramento delle prestazioni dopo aver abilitato il controllo delle versioni del bucket
<a name="performance-degradation"></a>

Il peggioramento delle prestazioni può verificarsi nei bucket con il controllo delle versioni abilitato se sono presenti troppi contrassegni di eliminazione o oggetti con versioni e se non vengono seguite le best practice.

**Numero eccessivo di contrassegni di eliminazione**  
Dopo aver abilitato la funzione Controllo delle versioni in un bucket, una richiesta `DELETE` senza un ID versione effettuata su un oggetto crea un contrassegno di eliminazione con un ID versione univoco. Le configurazioni del ciclo di vita con una regola **Scadenza versioni correnti degli oggetti** aggiungono un contrassegno di eliminazione con un ID versione univoco a ogni oggetto. Un numero eccessivo di contrassegni di eliminazione può ridurre le prestazioni nel bucket.

Se la funzione Controllo delle versioni viene disabilitata in un bucket, Amazon S3 contrassegna l'ID versione come `NULL` per i nuovi oggetti creati. Un'operazione di scadenza in un bucket con la funzione Controllo delle versioni disabilitata fa sì che Amazon S3 crei un contrassegno di eliminazione il cui ID versione è `NULL`. In un bucket con la funzione Controllo delle versioni disabilitata, viene creato un contrassegno di eliminazione `NULL` per ogni richiesta di eliminazione. Questi contrassegni di eliminazione `NULL` sono anche chiamati contrassegni di eliminazione degli oggetti scaduti quando tutte le versioni degli oggetti vengono eliminate e rimane solo un unico contrassegno di eliminazione. In presenza di un numero eccessivo di contrassegni di eliminazione `NULL`, si verifica un peggioramento delle prestazioni nel bucket.

**Numero eccessivo di oggetti con il controllo delle versioni abilitato**  
Se un bucket con il controllo delle versioni abilitato contiene oggetti con milioni di versioni, può verificarsi un incremento del numero di errori di tipo 503 Servizio non disponibile. Se rilevi un aumento significativo del numero di risposte HTTP 503 Servizio non disponibile ricevute per le richieste oggetto `PUT` o `DELETE` in un bucket con il controllo delle versioni abilitato, è possibile che esistano uno o più oggetti nel bucket per i quali sono presenti milioni di versioni. In presenza di oggetti con milioni di versioni, Amazon S3 limita automaticamente le richieste a livello di bucket. La limitazione delle richieste consente di proteggere il bucket dal traffico generato da un numero eccessivo di richieste, che potrebbe potenzialmente impedire la gestione di altre richieste eseguite nello stesso bucket. 

Per determinare quali oggetti sono dotati di milioni di versioni, utilizza S3 Inventory. S3 Inventory genera un report che fornisce un elenco di file flat degli oggetti in un bucket. Per ulteriori informazioni, consulta [Catalogazione e analisi dei dati con Inventario S3](storage-inventory.md).

Per verificare se nel bucket è presente un numero elevato di oggetti con il controllo delle versioni abilitato, utilizza le metriche di S3 Storage Lens per visualizzare i valori pertinenti nei campi **Conteggio oggetti versione corrente**, **Conteggio di oggetti versione non corrente** e **Conteggio oggetti contrassegno di eliminazione**. Per ulteriori informazioni sulle metriche di Storage Lens, consulta [Glossario dei parametri di Amazon S3 Storage Lens](storage_lens_metrics_glossary.md).

Il team Amazon S3 consiglia ai clienti di analizzare le applicazioni che sovrascrivono ripetutamente lo stesso oggetto, creando potenzialmente milioni di versioni per tale oggetto, al fine di determinare se il funzionamento dell'applicazione corrisponde a quello previsto. Ad esempio, un'applicazione che sovrascrive lo stesso oggetto ogni minuto per una settimana può creare oltre diecimila versioni. Si consiglia di archiviare meno di centomila versioni per ciascun oggetto. Se hai un caso d'uso che richiede milioni di versioni per uno o più oggetti, contatta il Supporto AWS team per ricevere assistenza nella determinazione di una soluzione migliore.

**Best practice**  
Per evitare problemi di deterioramento delle prestazioni correlati al controllo delle versioni, consigliamo di adottare le seguenti best practice:
+ Abilita una regola del ciclo di vita per far scadere le versioni precedenti degli oggetti. Ad esempio, è possibile creare una regola del ciclo di vita per far scadere le versioni non correnti dopo 30 giorni dal passaggio dell'oggetto allo stato non corrente. Puoi anche conservare più versioni non correnti se non desideri eliminarle tutte. Per ulteriori informazioni, consulta l'argomento relativo all'[impostazione di una configurazione del ciclo di vita S3](how-to-set-lifecycle-configuration-intro.md).
+ Abilita una regola del ciclo di vita per eliminare i contrassegni di eliminazione degli oggetti scaduti a cui non sono associati oggetti dati nel bucket. Per ulteriori informazioni, consulta l'argomento relativo alla [rimozione dei contrassegni di eliminazione degli oggetti scaduti](lifecycle-configuration-examples.md#lifecycle-config-conceptual-ex7).

Per ulteriori best practice per l'ottimizzazione delle prestazioni di Amazon S3, consulta [Modelli di progettazione delle best practice](optimizing-performance.md).