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

Rinominare gli oggetti nei bucket di directory

Utilizzando l'RenameObjectoperazione, è possibile rinominare atomicamente un oggetto esistente in un bucket di directory che utilizza la classe di storage 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 RenameObject API non avrà esito positivo sugli oggetti che terminano con il carattere delimitatore slash ()/. Per ulteriori informazioni, consulta Denominazione degli oggetti Amazon S3.

L'RenameObjectoperazione viene in genere completata in millisecondi indipendentemente dalla dimensione dell'oggetto. Questa funzionalità accelera applicazioni come la gestione dei file di registro, 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

RenameObjectè supportato solo per gli oggetti archiviati nella classe di storage S3 Express One Zone.

Per concedere l'accesso all'RenameObjectoperazione, si consiglia di utilizzare l'CreateSessionoperazione per l'autorizzazione basata sulla sessione. In particolare, concedi l's3express:CreateSessionautorizzazione al bucket di directory in una policy di bucket o in una politica basata sull'identità. Quindi, si effettua la chiamata CreateSession API sul bucket di directory per ottenere un token di sessione. Con il token di sessione nell'intestazione della richiesta, puoi effettuare richieste API per questa operazione. Dopo la scadenza del token di sessione, si effettua un'altra chiamata CreateSession API 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 sull'autorizzazione, CreateSessionconsulta Amazon S3 API Reference. Per ulteriori informazioni sulle operazioni delle API degli endpoint Zonal, consulta Autorizzazione delle operazioni delle API degli endpoint Zonal con. CreateSession

Se non desideri sovrascrivere un oggetto esistente, puoi aggiungere l'intestazione If-None-Match condizionale con il valore nella richiesta. ‘*’ RenameObject Amazon S3 restituisce un 412 Precondition Failed errore 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 degli endpoint zonali (operazione a livello di oggetto o piano dati) a cui è registrata. AWS CloudTrailÈ possibile utilizzarla 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 storage che supportaRenameObject, con un prezzo uguale a quello di PUT COPYPOST, e LIST le richieste (per 1.000 richieste) in S3 Express One Zone. Per ulteriori informazioni, consulta Prezzi di Amazon S3.

Rinominare 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).

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

  2. Nel pannello di navigazione, scegli Bucket, quindi scegli la scheda Directory buckets. Passa al bucket di directory Amazon S3 che contiene l'oggetto che desideri 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 avrà esito negativo e Amazon S3 restituirà un 412 Precondition Failed errore. 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. Scegliete Rinomina oggetto. Amazon S3 rinomina l'oggetto.

Gli rename-object esempi mostrano come utilizzare la 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 amzn-s3-demo-bucket--usw2-az1--x-s3/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 directory. amzn-s3-demo-bucket--usw2-az1--x-s3

  • 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

Puoi usare l'SDK per Python per rinominare i tuoi oggetti. Per utilizzare questi esempi, sostituisci user input placeholders con le tue informazioni.

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"{amzn-s3-demo-bucket--usw2-az1--x-s3}/{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 successo se la ridenominazione dell'oggetto ha esito positivo o stampa un messaggio di errore se fallisce.

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, e. SourceIfMatch 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 destination_key nel bucket di amzn-s3-demo-bucket--usw2-az1--x-s3 directory.

  • Stampa un messaggio di successo se la ridenominazione dell'oggetto ha esito positivo oppure stampa un messaggio di errore se fallisce o se le condizioni non sono soddisfatte.

SDK for Rust

Puoi usare l'SDK per Rust per rinominare i tuoi oggetti. Per utilizzare questi esempi, sostituisci user input placeholders con le tue informazioni.

L'esempio seguente mostra come rinominare un oggetto nel bucket di amzn-s3-demo-bucket--usw2-az1--x-s3 directory utilizzando l'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" nel bucket di directorynew-name.txt. amzn-s3-demo-bucket--usw2-az1--x-s3

  • Restituisce un Result tipo per gestire potenziali errori.

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

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