Ripristino di un oggetto archiviato - Amazon Simple Storage Service

Ripristino di un oggetto archiviato

Gli oggetti Amazon S3 memorizzati nelle classi di archiviazione S3 Glacier Flexible Retrieval S3 Glacier Deep Archive non sono immediatamente accessibili. Per accedere a un oggetto in queste classi di storage, è necessario ripristinare una copia temporanea dell’oggetto nel relativo bucket S3 per una durata specificata (numero di giorni). Per informazioni sull'utilizzo di queste classi di storage, consulta Utilizzo delle classi di storage di Amazon S3 e Gestione del ciclo di vita dello storage.

Gli oggetti ripristinati da S3 Glacier Flexible Retrieval o S3 Glacier Deep Archive vengono memorizzati solo per il numero di giorni specificato. Se si vuole ottenere una copia permanente dell'oggetto, è necessario crearne una nel bucket Amazon S3. A meno che non si crei una copia, l'oggetto verrà comunque memorizzato nelle classi di archiviazione S3 Glacier Flexible Retrieval o S3 Glacier Deep Archive.

Amazon S3 calcola la data di scadenza aggiungendo il numero di giorni che vengono specificati al momento della richiesta di ripristino dell'oggetto, arrotondando alla mezzanotte UTC del giorno successivo. Questo calcolo si applica al ripristino iniziale dell'oggetto e a eventuali proroghe di disponibilità che vengono richieste. Ad esempio, se un oggetto è stato ripristinato il 15 ottobre 2012 alle ore 10:30 UTC e il numero di giorni specificato è pari a 3, l'oggetto sarà disponibile fino al 19 ottobre 2012 alle ore 00:00 UTC. Se, in data 16 ottobre 2012 alle ore 11:00 UTC il numero di giorni per il quale si vuole che l'oggetto sia accessibile viene modificato portandolo a 1, Amazon S3 renderà disponibile l'oggetto ripristinato fino al 18 ottobre 2012 alle ore 00:00 UTC.

Quando ripristini un oggetto archiviato, paghi sia l'archivio sia la copia che è stata ripristinata temporaneamente. Per informazioni sui prezzi, consulta Prezzi di Amazon S3.

Puoi ripristinare un oggetto archiviato utilizzando la console Simple Storage Service (Amazon S3), l'API REST, gli SDK AWS e l'AWS Command Line Interface (AWS CLI).

Utilizza la seguente procedura per ripristinare un oggetto archiviato nelle classi di archiviazione S3 Glacier Flexible Retrieval o S3 Glacier Deep Archive per verificarne lo stato e aggiornare un ripristino in corso. (La console utilizza i nomi S3 Glacier Flexible Retrieval e Glacier Deep Archive per queste classi di archiviazione.)

Per ripristinare un oggetto archiviato
  1. Accedi alla AWS Management Console e apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  2. Nell'elenco Buckets (Bucket) scegliere il nome del bucket che contiene gli oggetti che si desidera ripristinare.

  3. Nell'elenco Objects (Oggetti) selezionare l'oggetto o gli oggetti che si desidera ripristinare, scegliere Actions (Operazioni), quindi selezionare Initiate restore (Avvia ripristino).

  4. Se si esegue il ripristino da S3 Glacier Flexible Retrieval o S3 Glacier Deep Archive, immettere il numero di giorni in cui si desidera che i dati archiviati siano accessibili nella finestra di dialogo Initiate restore (Avvia ripristino).

  5. In Retrieval options (Opzioni di recupero), effettuare una delle seguenti operazioni:

    • Scegliere Bulk retrieval (Recupero Bulk) oppure Standard retrieval (Recupero Standard), quindi selezionare Restore (Ripristina).

    • Scegli Expedited retrieval (Recupero rapido) (disponibile solo per S3 Glacier Flexible Retrieval o S3 Intelligent-Tiering Archive Access).

  6. La capacità assegnata è disponibile solo per gli oggetti in S3 Glacier Flexible Retrieval. Se si dispone di capacità con provisioning, scegliere Restore (Ripristina) per avviare un ripristino mediante capacità con provisioning.

    Se si dispone di capacità con provisioning, tutti i recuperi Expedited vengono eseguiti mediante tale capacità con provisioning. Per ulteriori informazioni, consultare Capacità con provisioning.

    • Se non si dispone di capacità con provisioning e non si vuole acquistarla, scegliere Restore (Ripristina).

    • Se non si dispone di capacità con provisioning ma si vuole acquistarla, scegliere Add capacity unit (Aggiungi unità di capacità), quindi selezionare Buy (Acquista). Quando si riceve il messaggio Purchase suceeded (Acquisto riuscito), scegliere Restore (Ripristina) per avviare un recupero mediante capacità con provisioning.

Puoi aggiornare la velocità di un ripristino mentre il ripristino è in corso.

Per aggiornare un ripristino in corso a un livello più veloce
  1. Apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  2. Nell'elenco Bucket name (Nome bucket), scegliere il nome del bucket che contiene gli oggetti che si vuole ripristinare.

  3. Nell'elenco Objects (Oggetti), seleziona uno o più oggetti con ripristino in corso, scegli Actions (Operazioni), quindi seleziona Restore from S3 Glacier Flexible Retrieval (Ripristino da S3 Glacier Flexible Retrieval). Per informazioni su come verificare lo stato del ripristino di un oggetto, consulta Controllo dello stato di ripristino e della data di scadenza.

  4. Selezionare il livello che si desidera aggiornare, quindi selezionare Restore (Ripristino).

    Per informazioni sull'aggiornamento a un livello di ripristino più rapido, consulta Aggiornamento della velocità di un ripristino in corso.

    Nota

    I ripristini standard e bulk per S3 Intelligent Tiering sono gratuiti. Tuttavia, le richieste di ripristino successive richiamate su un oggetto che è già in fase di ripristino vengono fatturate come richiesta GET.

Controllo dello stato di ripristino e della data di scadenza

Per controllare lo stato di avanzamento del ripristino, consulta la pagina Panoramica dell’oggetto. Per ulteriori informazioni, consultare Visualizzazione della panoramica di un oggetto nella console Amazon S3. Questa pagina mostrerà che il ripristino è in corso.

Se si esegue il ripristino da S3 Glacier Flexible Retrieval o S3 Glacier Deep Archive, la copia temporanea della Object overview (Panoramica dell'oggetto) mostra la Restoration expiry date (Data di scadenza del ripristino). In questa data Amazon S3 rimuoverà la copia ripristinata dall'archivio.

Gli oggetti ripristinati da S3 Glacier Flexible Retrieval o S3 Glacier Deep Archive vengono memorizzati solo per il numero di giorni specificato. Se si vuole ottenere una copia permanente dell'oggetto, è necessario crearne una nel bucket Amazon S3.

Una volta ripristinato un oggetto, è possibile scaricarlo dalla pagina Overview (Panoramica). Per ulteriori informazioni, consultare Visualizzazione della panoramica di un oggetto nella console Amazon S3.

Java

Nell'esempio seguente viene illustrato come ripristinare una copia di un oggetto archiviato utilizzando AWS SDK for Java. L'esempio avvia una richiesta di ripristino per l'oggetto archiviato specificato e controlla lo stato di ripristino.

Per istruzioni su come creare e testare un esempio di utilizzo, consulta Test degli esempi di codice Java di Amazon S3.

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.ObjectMetadata; import com.amazonaws.services.s3.model.RestoreObjectRequest; import java.io.IOException; public class RestoreArchivedObject { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; String keyName = "*** Object key ***"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .build(); // Create and submit a request to restore an object from Glacier for two days. RestoreObjectRequest requestRestore = new RestoreObjectRequest(bucketName, keyName, 2); s3Client.restoreObjectV2(requestRestore); // Check the restoration status of the object. ObjectMetadata response = s3Client.getObjectMetadata(bucketName, keyName); Boolean restoreFlag = response.getOngoingRestore(); System.out.format("Restoration status: %s.\n", restoreFlag ? "in progress" : "not in progress (finished or failed)"); } 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

Il seguente esempio di codice C# avvia una richiesta di ripristino per un oggetto archiviato per 2 giorni. Amazon S3 mantiene lo stato di ripristino nei metadati dell'oggetto. Dopo aver avviato la richiesta, l'esempio recupera i metadati dell'oggetto e controlla il valore della proprietà RestoreInProgress.

Per istruzioni su come creare e testare un esempio di utilizzo, consulta Esecuzione degli esempi di codice .NET di Amazon S3.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class RestoreArchivedObjectTest { private const string bucketName = "*** bucket name ***"; private const string objectKey = "** archived object key name ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { client = new AmazonS3Client(bucketRegion); RestoreObjectAsync(client, bucketName, objectKey).Wait(); } static async Task RestoreObjectAsync(IAmazonS3 client, string bucketName, string objectKey) { try { var restoreRequest = new RestoreObjectRequest { BucketName = bucketName, Key = objectKey, Days = 2 }; RestoreObjectResponse response = await client.RestoreObjectAsync(restoreRequest); // Check the status of the restoration. await CheckRestorationStatusAsync(client, bucketName, objectKey); } catch (AmazonS3Exception amazonS3Exception) { Console.WriteLine("An AmazonS3Exception was thrown. Exception: " + amazonS3Exception.ToString()); } catch (Exception e) { Console.WriteLine("Exception: " + e.ToString()); } } static async Task CheckRestorationStatusAsync(IAmazonS3 client, string bucketName, string objectKey) { GetObjectMetadataRequest metadataRequest = new GetObjectMetadataRequest { BucketName = bucketName, Key = objectKey }; GetObjectMetadataResponse response = await client.GetObjectMetadataAsync(metadataRequest); Console.WriteLine("restoration status: {0}", response.RestoreInProgress ? "in-progress" : "finished or failed"); } } }

Amazon S3 fornisce un'API che consente di avviare un ripristino dell'archivio. Per ulteriori informazioni, consulta RestoreObject nella Documentazione di riferimento delle API di Amazon Simple Storage Service.

Utilizzare il comando restore-object per ripristinare gli oggetti da S3 Glacier Flexible Retrieval.

Nell'esempio seguente viene ripristinato l’oggetto dir1/example.obj in awsexamplebucket per 25 giorni.

aws s3api restore-object --bucket awsexamplebucket --key dir1/example.obj --restore-request '{"Days":25,"GlacierJobParameters":{"Tier":"Standard"}}'

Se la sintassi JSON utilizzata nell'esempio genera un errore su un client Windows, sostituire la richiesta di ripristino con la seguente sintassi:

--restore-request Days=25,GlacierJobParameters={"Tier"="Standard"}

Per monitorare lo stato della richiesta restore-object è possibile utilizzare il seguente comando:

aws s3api head-object --bucket awsexamplebucket --key dir1/example.obj

Per ulteriori informazioni, consulta restore-object nel Riferimento ai comandi di AWS CLI.