

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Changement de nom des objets de compartiments de répertoires
<a name="directory-buckets-objects-rename"></a>

À l’aide de l’opération `RenameObject`, vous pouvez renommer de manière atomique un objet d’un compartiment de répertoires qui utilise la classe de stockage S3 Express One Zone, sans aucun déplacement de données. Vous pouvez renommer un objet en spécifiant son nom initial comme source et son nouveau nom comme destination dans le même compartiment de répertoires. L’opération d’API `RenameObject` échoue sur les objets qui se terminent par une barre oblique (`/`). Pour plus d’informations, consultez [Attribution d’un nom aux objets Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html).

L’opération `RenameObject` est exécutée généralement en quelques millisecondes, quelle que soit la taille de l’objet. Cette fonctionnalité accélère les applications telles que la gestion des fichiers journaux, le traitement multimédia et l’analytique des données. En outre, `RenameObject` préserve toutes les propriétés des métadonnées des objets, notamment la classe de stockage, le type de chiffrement, la date de création, la date de dernière modification et les propriétés des sommes de contrôle.

**Note**  
`RenameObject` n’est pris en charge que pour les objets stockés dans la classe de stockage S3 Express One Zone.

 Pour autoriser l’accès à l’opération `RenameObject`, nous vous recommandons d’utiliser l’opération `CreateSession` pour accorder une autorisation basée sur la session. Plus précisément, vous accordez l’autorisation `s3express:CreateSession` au compartiment de répertoires dans le cadre d’une stratégie de compartiment ou d’une politique basée sur l’identité. Ensuite, vous effectuez l’appel d’API `CreateSession` sur le compartiment de répertoires pour obtenir un jeton de session. Avec le jeton de session dans l’en-tête de votre demande, vous pouvez envoyer des demandes d’API à cette opération. À l’expiration du jeton de session, vous effectuez un nouvel appel d’API `CreateSession` pour générer un nouveau jeton de session à utiliser. La AWS CLI créera et AWS SDKs gérera votre session, notamment en actualisant automatiquement le jeton de session pour éviter les interruptions de service lorsqu'une session expire. Pour plus d’information sur l’autorisation, consultez [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html) dans la *Référence des API Amazon S3*. Pour plus d’informations sur les opérations d’API de point de terminaison zonal, consultez [Autorisation des opérations d’API de point de terminaison zonal avec `CreateSession`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-create-session.html). 

 Si vous ne souhaitez pas remplacer un objet existant, vous pouvez ajouter l’en-tête conditionnel `If-None-Match` avec la valeur `‘*’` dans la demande `RenameObject`. Amazon S3 renvoie une erreur `412 Precondition Failed` si le nom de l’objet existe déjà. Pour plus d’informations, consultez [https://docs.aws.amazon.com/AmazonS3/latest/API/API_RenameObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_RenameObject.html) dans la *Référence d’API Amazon S3*. 

 `RenameObject` est une opération d’API de point de terminaison zonal (niveau de l’objet ou plan de données) qui est journalisée dans AWS CloudTrail. Vous pouvez l'utiliser CloudTrail pour recueillir des informations sur les `RenameObject` opérations effectuées sur vos objets dans des compartiments de répertoire. Pour plus d'informations, consultez la section [Journalisation avec AWS CloudTrail pour les compartiments de répertoire](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-one-zone-logging.html) et les [exemples de fichiers CloudTrail journaux pour les compartiments de répertoire](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-log-files.html). 

S3 Express One Zone est la seule classe de stockage qui prend en charge `RenameObject`, au même prix que les demandes `PUT`, `COPY`, `POST` et `LIST` (pour 1 000 demandes) dans S3 Express One Zone. Pour plus d’informations, consultez [Tarification Amazon S3](https://aws.amazon.com/s3/pricing/). 

## Changement de nom d’un objet
<a name="directory-bucket-rename"></a>

Pour renommer un objet dans votre compartiment de répertoire, vous pouvez utiliser la console Amazon S3, la AWS CLI AWS SDKs, l'API REST ou Mountpoint pour Amazon S3 (version 1.19.0 ou ultérieure).

### Utilisation de la console S3
<a name="set-rename--console"></a>

**Pour renommer un objet d’un compartiment de répertoires**

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans le volet de navigation, choisissez **Compartiments**, puis l’onglet **Compartiments de répertoires**. Accédez au compartiment de répertoires Amazon S3 contenant l’objet que vous souhaitez renommer.

1. Cochez la case située à côté de l’objet que vous voulez renommer.

1. Dans le menu **Actions**, sélectionnez **Renommer l’objet**.

1. Dans la zone **Nouveau nom d’objet**, saisissez le nouveau nom de l’objet.
**Note**  
Si vous spécifiez le nom d’un objet existant, l’opération échoue et Amazon S3 renvoie le message d’erreur `412 Precondition Failed`. La longueur du nom de la clé de l’objet ne peut pas dépasser 1 024 octets. Les préfixes inclus dans le nom de l’objet sont pris en compte dans la longueur totale. 

1. Choisissez **Renommer l’objet**. Amazon S3 renommera votre objet. 

### Utilisation de la AWS CLI
<a name="set-rename--cli"></a>

Les exemples `rename-object` montrent comment utiliser l’interface de ligne de commande AWS pour renommer un objet. Pour exécuter ces commandes, remplacez le {{user input placeholders}} par vos propres informations

L'exemple suivant montre comment renommer un objet à l'aide d'une vérification conditionnelle sur celui de l'objet source. 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}}\""
```

Cette commande exécute les opérations suivantes :
+ Renomme un objet de {{original-file.txt}} à {{new-file.txt}} dans le compartiment de {{amzn-s3-demo-bucket--usw2-az1--x-s3}} répertoire.
+ N'effectue le changement de nom que si l'objet source ETag correspond à « {{a1b7c3d4e5f6}} ».

Si ce ETag n'est pas le cas, l'opération échouera avec une `412 Precondition Failed` erreur. 

L’exemple suivant montre comment renommer un objet avec une vérification conditionnelle du nouveau nom d’objet spécifié.

```
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}}\""
```

Cette commande exécute les opérations suivantes :
+ Renomme un objet de {{original-file.txt}} à {{new-file.txt}} dans le compartiment de {{amzn-s3-demo-bucket--usw2-az1--x-s3}} répertoire.
+ N'exécute l'opération de renommage que si l'objet existe et que celui de l'objet ETag ne correspond pas à « {{e5f3g7h8i9j0}} ».

Si un objet existe déjà avec le nouveau nom spécifié et la correspondance ETag, l'opération échouera avec une `412 Precondition Failed` erreur. 

### En utilisant le AWS SDKs
<a name="directory-bucket-rename-sdks"></a>

------
#### [ SDK for Java ]

Vous pouvez utiliser le AWS SDK pour Java pour renommer vos objets. Pour utiliser ces exemples, remplacez le {{user input placeholders}} par vos propres informations

L'exemple suivant montre comment créer un à `RenameObjectRequest` l'aide du 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();
```

Ce code effectue les opérations suivantes :
+ Créez une demande pour renommer un objet de « » en {{key}} « {{new-key}} » dans le compartiment de {{amzn-s3-demo-bucket--usw2-az1--x-s3}} répertoire.
+ Inclut une condition selon laquelle le changement de nom ne sera effectué que si l'objet ETag correspond à « {{e5f3g7h8i9j0}} ». 
+ Si le ETag ne correspond pas ou si l'objet n'existe pas, l'opération échouera.

L'exemple suivant montre comment créer une `RenameObjectRequest` condition sans correspondance à l'aide du 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();
```

Ce code effectue les opérations suivantes :
+ Crée une demande pour renommer un objet de « {{key}} » à « {{new-key}} » dans le compartiment de {{amzn-s3-demo-bucket--usw2-az1--x-s3}} répertoire.
+ Inclut une condition qui garantit `.destinationIfNoneMatch(noneMatchETag)` que le changement de nom n'aura lieu que si celui de l'objet de destination ETag ne correspond pas à « {{e5f3g7h8i9j0}} ».

L'opération échouera avec une `412 Precondition Failed` erreur si un objet existe avec le nouveau nom spécifié et porte le nom spécifié ETag. 

------
#### [ SDK for Python ]

Vous pouvez utiliser le kit SDK pour Python pour renommer vos objets. Pour utiliser ces exemples, remplacez les {{user input placeholders}} par vos propres informations.

L'exemple suivant montre comment renommer un objet à l'aide du AWS SDK pour 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}")
```

Ce code effectue les opérations suivantes :
+ Renomme un objet de {{source\_key}} à {{destination\_key}} dans le compartiment de {{amzn-s3-demo-bucket--usw2-az1--x-s3}} répertoire.
+ Imprimer un message de réussite si le changement de nom de votre objet aboutit ou un message d’erreur s’il échoue.

L'exemple suivant montre comment renommer un objet avec les `DestinationIfNoneMatch` conditions `SourceIfMatch` et à l'aide du AWS SDK pour 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}")
```

Ce code effectue les opérations suivantes :
+ Effectuer une opération de changement de nom conditionnel et appliquer deux conditions, `SourceIfMatch` et `DestinationIfNoneMatch`. La combinaison de ces conditions garantit que l’objet n’a pas été modifié et qu’aucun objet n’existe déjà avec le nouveau nom spécifié. 
+ Renomme un objet de {{source\_key}} à {{destination\_key}} dans le compartiment de {{amzn-s3-demo-bucket--usw2-az1--x-s3}} répertoire.
+ Imprimer un message de réussite si le changement de nom de votre objet aboutit ou un message d’erreur s’il échoue ou si les conditions ne sont pas remplies.

------
#### [ SDK for Rust ]

Vous pouvez utiliser le kit SDK pour Rust pour renommer vos objets. Pour utiliser ces exemples, remplacez les {{user input placeholders}} par vos propres informations.

L’exemple suivant montre comment renommer un objet du compartiment de répertoires {{amzn-s3-demo-bucket--usw2-az1--x-s3}} à l’aide du kit SDK pour 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(())
}
```

Ce code effectue les opérations suivantes :
+ Crée une demande pour renommer un objet de « {{old-name.tx}} » à « {{new-name.txt}} » dans le compartiment de {{amzn-s3-demo-bucket--usw2-az1--x-s3}} répertoire.
+ Renvoyer un type `Result` pour gérer les erreurs potentielles. 

------

### Utilisation de l'API REST
<a name="directory-bucket-rename-api"></a>

 Vous pouvez envoyer des demandes REST pour renommer un objet. Pour plus d’informations, consultez [https://docs.aws.amazon.com/AmazonS3/latest/API/API_RenameObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_RenameObject.html) dans la *Référence d’API Amazon S3*. 

### Utilisation de Mountpoint pour Amazon S3
<a name="directory-bucket-rename-api"></a>

 À partir de la version 1.19.0 ou supérieure, Mountpoint pour Amazon S3 prend en charge le changement de nom des objets dans S3 Express One Zone. Pour plus d’informations sur Mountpoint, consultez [Utilisation de Mountpoint](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mountpoint.html).