Elenchi di oggetti in un bucket che supporta la funzione Controllo delle versioni - Amazon Simple Storage Service

Elenchi di oggetti in un bucket che supporta la funzione Controllo delle versioni

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 elencare gli oggetti in un bucket con il controllo delle versioni abilitato, è necessario disporre dell'autorizzazione ListBucketVersions.

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

Per visualizzare più versioni di un oggetto
  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 contenente l'oggetto.

  3. 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, consultare Visualizzazione della panoramica di un oggetto nella console Amazon S3.

Nota

Per accedere alle versioni degli oggetti più vecchie di 300 versioni, è necessario utilizzare 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 Utilizzo della funzione Controllo delle versioni nei bucket S3.

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 SDK AWS, consulta il Centro Developer di AWS.

Java

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.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 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 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); } } } }
Esempio - 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.

GET /?versions HTTP/1.1 Host: bucketName.s3.amazonaws.com Date: Wed, 28 Oct 2009 22:32:00 +0000 Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=
Esempio - Recupero di tutte le versioni di una chiave

Per recuperare un sottoinsieme di versioni di un oggetto si utilizzano i parametri di richiesta di GET Bucket. Per ulteriori informazioni, consulta GET Bucket.

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

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

    GET /?versions&prefix=objectName HTTP/1.1

Esempio - Recupero di oggetti tramite un prefisso

Nell'esempio seguente vengono recuperati gli oggetti la cui chiave è o inizia con myObject.

GET /?versions&prefix=myObject HTTP/1.1 Host: bucket.s3.amazonaws.com Date: Wed, 28 Oct 2009 22:32:00 GMT 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 l'argomento relativo all'operazione GET Bucket nella Documentazione di riferimento delle API di Amazon Simple Storage Service.

Esempio - 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 l'argomento relativo all'operazione GET Bucket 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.

Esempio - Recupero di oggetto che iniziano con la chiave e l'ID versione specificati
GET /?versions&key-marker=myObject&version-id-marker=298459348571 HTTP/1.1 Host: bucket.s3.amazonaws.com Date: Wed, 28 Oct 2009 22:32:00 GMT Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=

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

aws s3api list-object-versions --bucket DOC-EXAMPLE-BUCKET1

Per ulteriori informazioni, su list-object-versions consulta list-object-versions nella Guida di riferimento dei comandi AWS CLI.