Elenchi di oggetti in un bucket che supporta la funzione 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à.

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 di Amazon S3 per visualizzare le varie versioni di un oggetto.

Per visualizzare più versioni di un oggetto
  1. Accedi a 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, consulta Visualizzazione delle proprietà di un oggetto nella console di Amazon S3.

Nota

Per accedere a versioni di oggetti precedenti a 300 versioni, devi utilizzare AWS CLI o quelle dell'URLoggetto.

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 di oggetti con S3 Versioning.

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

Java

Per istruzioni su come creare e testare un esempio funzionante, consulta Getting Started nella AWS SDK for 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. NETnella AWS SDKforma. NETGuida per gli sviluppatori.

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, usa i parametri di richiesta per 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 GET Bucketnell'Amazon Simple Storage Service API Reference.

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-markerversion-id-marker,NextKeyMarker, eNextVersionIdMarker, vedi GET Bucketnell'Amazon Simple Storage Service API Reference.

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 amzn-s3-demo-bucket1

Per ulteriori informazioni su, list-object-versions vedere list-object-versionsnel AWS CLI Command Reference.