

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
<a name="directory-buckets-objects-rename"></a>

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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html).

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 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html) 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`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-create-session.html). 

 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 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_RenameObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_RenameObject.html) 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'`RenameObject`operazione eseguita sugli oggetti nei bucket di directory. Per ulteriori informazioni, vedete [Logging with AWS CloudTrail for directory bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-one-zone-logging.html) ed [esempi di file di CloudTrail log per](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-log-files.html) 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](https://aws.amazon.com/s3/pricing/). 

## Ridenominazione di un oggetto
<a name="directory-bucket-rename"></a>

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

### Utilizzo della console S3
<a name="set-rename--console"></a>

**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/](https://console.aws.amazon.com/s3/)

1. 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.

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

1. Nel menu **Azioni**, scegli **Rinomina oggetto**.

1. 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. 

1. Scegli **Rinomina l’oggetto**. Amazon S3 rinomina l'oggetto. 

### Utilizzo della AWS CLI
<a name="set-rename--cli"></a>

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. 

### Usando il AWS SDKs
<a name="directory-bucket-rename-sdks"></a>

------
#### [ 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 "*key**new-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 fallirà con un `412 Precondition Failed` errore se esiste un oggetto con il nuovo nome specificato e ha quello 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\$1key* *destination\$1key* *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\$1key* a nel bucket di directory. *destination\$1key* *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. 

------

### Utilizzo della REST API
<a name="directory-bucket-rename-api"></a>

 Per rinominare un oggetto è possibile inviare richieste REST. Per ulteriori informazioni, consulta [https://docs.aws.amazon.com/AmazonS3/latest/API/API_RenameObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_RenameObject.html) nella *documentazione di riferimento delle API di Amazon S3*. 

### Utilizzo di Mountpoint per Amazon S3
<a name="directory-bucket-rename-api"></a>

 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mountpoint.html).