Risoluzione dei problemi relativi al controllo delle versioni - Amazon Simple Storage Service

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

Risoluzione dei problemi relativi al controllo delle versioni

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

Desidero recuperare oggetti che sono stati eliminati per errore in un bucket in cui la funzione Controllo delle versioni è abilitata

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 AWS Management Console e apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

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

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

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

  5. 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 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 example-s3-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. Per 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 example-s3-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.

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 example-s3-bucket --key index.html --version-id versionID

Per ulteriori informazioni sul comando delete-object, consulta delete-object 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.

Voglio eliminare definitivamente gli oggetti con il controllo delle versioni abilitato

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.

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

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

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

Sto riscontrando un peggioramento delle prestazioni dopo aver abilitato il controllo delle versioni del bucket

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 Amazon S3 Inventory.

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.

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 AWS Support 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.

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

Per ulteriori best practice per l'ottimizzazione delle prestazioni di Amazon S3, consulta Modelli di progettazione delle best practice.