Ridenominazione degli oggetti nei bucket di directory - 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à.

Ridenominazione degli oggetti nei bucket di directory

L’operazione RenameObject consente di rinominare automaticamente un oggetto esistente in un bucket di directory che utilizza la classe di archiviazione S3 Express One Zone, senza alcun movimento di dati. È possibile rinominare un oggetto specificando il nome dell’oggetto esistente come origine e il nuovo nome dell’oggetto come destinazione all’interno dello stesso bucket di directory. L’operazione API RenameObject non ha esito positivo sugli oggetti che terminano con il carattere delimitatore barra (/). Per ulteriori informazioni, consulta Denominazione di oggetti Amazon S3.

L’operazione RenameObject viene in genere completata nell’ordine di millisecondi indipendentemente dalla dimensione dell’oggetto. Questa funzionalità accelera applicazioni come la gestione dei file di log, l’elaborazione multimediale e l’analisi dei dati. Inoltre, RenameObject conserva tutte le proprietà dei metadati degli oggetti, tra cui la classe di archiviazione, il tipo di crittografia, la data di creazione, la data dell’ultima modifica e le proprietà del checksum.

Nota

L’operazione RenameObject è supportata solo per gli oggetti archiviati nella classe di archiviazione S3 Express One Zone.

Per fornire l’accesso all’operazione RenameObject, è consigliabile utilizzare l’operazione CreateSession per l’autorizzazione basata sulla sessione. In particolare, si fornisce l’autorizzazione s3express:CreateSession al bucket di directory in una policy di bucket o in una policy basata sull’identità. Quindi, si effettua la chiamata API CreateSession sul bucket di directory per ottenere un token di sessione. Con il token di sessione nell’intestazione della richiesta, è possibile effettuare richieste API per questa operazione. Dopo la scadenza del token di sessione, si effettua un’altra chiamata API CreateSession per generare un nuovo token di sessione da utilizzare. La AWS CLI e AWS SDKs creerà e gestirà la sessione, incluso l'aggiornamento automatico del token di sessione per evitare interruzioni del servizio alla scadenza di una sessione. Per ulteriori informazioni, consulta CreateSession nella Guida di riferimento delle API di Amazon S3. Per ulteriori informazioni sulle operazioni API degli endpoint di zona, consulta Autorizzazione delle operazioni API dell’endpoint di zona con CreateSession.

Se non desideri sovrascrivere un oggetto esistente, è possibile aggiungere l’intestazione condizionale If-None-Match con il valore ‘*’ nella richiesta RenameObject. Amazon S3 restituisce un errore 412 Precondition Failed se il nome dell’oggetto esiste già. Per ulteriori informazioni, consulta RenameObject nella documentazione di riferimento delle API di Amazon S3.

RenameObject è un’operazione API dell’endpoint di zona (operazione a livello di oggetto o piano dati) che viene registrata nel log in AWS CloudTrail. È possibile utilizzare CloudTrail per raccogliere informazioni sull'RenameObjectoperazione eseguita sugli oggetti nei bucket di directory. Per ulteriori informazioni, vedete Logging with AWS CloudTrail for directory bucket ed esempi di file di CloudTrail log per bucket di directory.

S3 Express One Zone è l’unica classe di archiviazione che supporta RenameObject, con un prezzo uguale a quello delle richieste PUT, COPY, POST e LIST (per 1.000 richieste) in S3 Express One Zone. Per ulteriori informazioni, consulta Prezzi di Amazon S3.

Ridenominazione di un oggetto

Per rinominare un oggetto nel tuo bucket di directory, puoi utilizzare la console Amazon S3, la AWS CLI AWS SDKs, l'API REST o Mountpoint per Amazon S3 (versione 1.19.0 o successiva).

Come rinominare un oggetto in un bucket di directory
  1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Nel riquadro di navigazione a sinistra, scegli Bucket, quindi seleziona la scheda Bucket di directory. Passa al bucket di directory Amazon S3 contenente l’oggetto da rinominare.

  3. Seleziona la casella di controllo dell'oggetto da rinominare.

  4. Nel menu Azioni, scegli Rinomina oggetto.

  5. Nella casella Nuovo nome oggetto, inserisci il nuovo nome dell'oggetto.

    Nota

    Se specifichi lo stesso nome di un oggetto esistente, l’operazione ha esito negativo e Amazon S3 restituisce un errore 412 Precondition Failed. La lunghezza del nome della chiave dell’oggetto non può superare 1.024 byte. I prefissi inclusi nel nome dell’oggetto vengono conteggiati ai fini della lunghezza totale.

  6. Scegli Rinomina l’oggetto. Amazon S3 rinomina l'oggetto.

Gli esempi rename-object illustrano in che modo è possibile utilizzare l’ AWS CLI per rinominare un oggetto. Per eseguire questi comandi, sostituiscili user input placeholders con le tue informazioni

L'esempio seguente mostra come rinominare un oggetto con un controllo condizionale sull'oggetto di origine. ETag

aws s3api rename-object \ --bucket amzn-s3-demo-bucket--usw2-az1--x-s3 \ --key new-file.txt \ --rename-source original-file.txt \ --source-if-match "\"a1b7c3d2e5f6\""

Questo comando funziona nel modo seguente:

  • Rinomina un oggetto da original-file.txt a new-file.txt nel bucket di directory. amzn-s3-demo-bucket--usw2-az1--x-s3

  • Esegue la ridenominazione solo se l'oggetto sorgente ETag corrisponde a "». a1b7c3d4e5f6

Se ETag non corrisponde, l'operazione avrà esito negativo e verrà 412 Precondition Failed generato un errore.

L’esempio seguente mostra come rinominare un oggetto con un controllo condizionale sul nuovo nome dell’oggetto specificato.

aws s3api rename-object \ --bucket amzn-s3-demo-bucket--usw2-az1--x-s3 \ --key new-file.txt \ --rename-source amzn-s3-demo-bucket--usw2-az1--x-s3/original-file.txt \ --destination-if-none-match "\"e5f3g7h8i9j0\""

Questo comando funziona nel modo seguente:

  • Rinomina un oggetto da original-file.txt a new-file.txt nel bucket di amzn-s3-demo-bucket--usw2-az1--x-s3 directory.

  • Esegue l'operazione di ridenominazione solo se l'oggetto esiste e ETag non corrisponde a "». e5f3g7h8i9j0

Se esiste già un oggetto con il nuovo nome specificato e la corrispondenza ETag, l'operazione avrà esito negativo e verrà 412 Precondition Failed generato un errore.

SDK for Java

È possibile utilizzare il AWS SDK per Java per rinominare gli oggetti. Per utilizzare questi esempi, sostituiscili user input placeholders con le tue informazioni

L'esempio seguente mostra come creare un file RenameObjectRequest utilizzando l' AWS SDK for Java

String key = "key"; String newKey = "new-key"; String expectedETag = "e5f3g7h8i9j0"; RenameObjectRequest renameRequest = RenameObjectRequest.builder() .bucket(amzn-s3-demo-bucket--usw2-az1--x-s3) .key(newKey) .renameSource(key) .destinationIfMatch(e5f3g7h8i9j0) .build();

Il codice effettua le seguenti operazioni:

  • Crea una richiesta per rinominare un oggetto da "" a key "new-key" nel bucket di directory. amzn-s3-demo-bucket--usw2-az1--x-s3

  • Include la condizione che la ridenominazione avvenga solo se l'oggetto ETag corrisponde a "». e5f3g7h8i9j0

  • Se ETag non corrisponde o l'oggetto non esiste, l'operazione avrà esito negativo.

L'esempio seguente mostra come creare una condizione RenameObjectRequest con una condizione non corrispondente utilizzando l' AWS SDK for Java.

String key = "key"; String newKey = "new-key"; String noneMatchETag = "e5f3g7h8i9j0"; RenameObjectRequest renameRequest = RenameObjectRequest.builder() .bucket(amzn-s3-demo-bucket--usw2-az1--x-s3) .key(newKey) .renameSource(key) .destinationIfNoneMatch(noneMatchETag) .build();

Il codice effettua le seguenti operazioni:

  • Crea una richiesta per rinominare un oggetto da "" a "keynew-key" nel bucket di directory. amzn-s3-demo-bucket--usw2-az1--x-s3

  • Include una condizione .destinationIfNoneMatch(noneMatchETag) che garantisce che la ridenominazione avvenga solo se l'oggetto di destinazione ETag non corrisponde a "». e5f3g7h8i9j0

L'operazione avrà esito negativo e restituirà un 412 Precondition Failed errore se esiste un oggetto con il nuovo nome specificato e presenta il nome specificato ETag.

SDK for Python

È possibile utilizzare SDK per Python per rinominare gli oggetti. Per utilizzare questi esempi, sostituisci user input placeholders con le informazioni appropriate.

L'esempio seguente mostra come rinominare un oggetto utilizzando l' AWS SDK for Python (Boto3).

def basic_rename(bucket, source_key, destination_key): try: s3.rename_object( Bucket=amzn-s3-demo-bucket--usw2-az1--x-s3, Key=destination_key, RenameSource=f"{source_key}" ) print(f"Successfully renamed {source_key} to {destination_key}") except ClientError as e: print(f"Error renaming object: {e}")

Il codice effettua le seguenti operazioni:

  • Rinomina un oggetto da a nel bucket di directory. source_key destination_key amzn-s3-demo-bucket--usw2-az1--x-s3

  • Stampa un messaggio di esito positivo se la ridenominazione dell’oggetto è stata completata o stampa un messaggio di errore se non è riuscita.

L'esempio seguente mostra come rinominare un oggetto con DestinationIfNoneMatch le condizioni SourceIfMatch and utilizzando l' AWS SDK for Python (Boto3).

def rename_with_conditions(bucket, source_key, destination_key, source_etag, dest_etag): try: s3.rename_object( Bucket=amzn-s3-demo-bucket--usw2-az1--x-s3, Key=destination_key, RenameSource=f"{amzn-s3-demo-bucket--usw2-az1--x-s3}/{source_key}", SourceIfMatch=source_ETag, DestinationIfNoneMatch=dest_ETag ) print(f"Successfully renamed {source_key} to {destination_key} with conditions") except ClientError as e: print(f"Error renaming object: {e}")

Il codice effettua le seguenti operazioni:

  • Esegue un’operazione di ridenominazione condizionale e applica due condizioni, SourceIfMatch e DestinationIfNoneMatch. La combinazione di queste condizioni assicura che l’oggetto non sia stato modificato e che non esista già un oggetto con il nuovo nome specificato.

  • Rinomina un oggetto da source_key a nel bucket di directory. destination_key amzn-s3-demo-bucket--usw2-az1--x-s3

  • Stampa un messaggio di esito positivo se la ridenominazione dell’oggetto è stata completata o stampa un messaggio di errore se non è riuscita o se le condizioni non sono soddisfatte.

SDK for Rust

È possibile utilizzare SDK per Rust per rinominare gli oggetti. Per utilizzare questi esempi, sostituisci user input placeholders con le informazioni appropriate.

L’esempio seguente mostra come rinominare un oggetto nel bucket di directory amzn-s3-demo-bucket--usw2-az1--x-s3 utilizzando SDK per Rust.

async fn basic_rename_example(client: &Client) -> Result<(), Box<dyn Error>> { let response = client .rename_object() .bucket(" amzn-s3-demo-bucket--usw2-az1--x-s3") .key("new-name.txt") // New name/path for the object .rename_source("old-name.txt") // Original object name/path .send() .await?; Ok(()) }

Il codice effettua le seguenti operazioni:

  • Crea una richiesta per rinominare un oggetto da "" a old-name.tx "new-name.txt" nel bucket di directory. amzn-s3-demo-bucket--usw2-az1--x-s3

  • Restituisce un tipo Result per gestire potenziali errori.

Per rinominare un oggetto è possibile inviare richieste REST. Per ulteriori informazioni, consulta RenameObject nella documentazione di riferimento delle API di Amazon S3.

A partire dalla versione 1.19.0 o successiva, Mountpoint per Amazon S3 supporta la ridenominazione degli oggetti in S3 Express One Zone. Per ulteriori informazioni su Mountpoint, consulta Operazioni con Mountpoint.