Renommer des objets dans des compartiments de répertoires - Amazon Simple Storage Service

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.

Renommer des objets dans des compartiments de répertoires

À l'aide de cette RenameObject opération, vous pouvez renommer automatiquement un objet existant dans un compartiment de répertoire qui utilise la classe de stockage S3 Express One Zone, sans aucun mouvement de données. Vous pouvez renommer un objet en spécifiant le nom de l'objet existant comme source et le nouveau nom de l'objet comme destination dans le même compartiment de répertoire. L'opération RenameObject d'API ne réussira pas sur les objets qui se terminent par le caractère séparateur slash (/). Pour plus d'informations, consultez Nommer les objets Amazon S3.

L'RenameObjectopération est généralement terminée 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'analyse 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 de somme de contrôle.

Note

RenameObjectn'est pris en charge que pour les objets stockés dans la classe de stockage S3 Express One Zone.

Pour accorder l'accès à l'RenameObjectopération, nous vous recommandons d'utiliser l'CreateSessionopération pour une autorisation basée sur la session. Plus précisément, vous accordez l's3express:CreateSessionautorisation au compartiment d'annuaire dans le cadre d'une politique de compartiment ou d'une politique basée sur l'identité. Ensuite, vous devez effectuer l'appel CreateSession d'API sur le bucket de répertoire pour obtenir un jeton de session. Avec le jeton de session dans l'en-tête de votre demande, vous pouvez envoyer des requêtes d'API à cette opération. Une fois le jeton de session expiré, vous effectuez un autre appel d'CreateSessionAPI 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'informations sur l'autorisation, consultez CreateSessionle manuel Amazon S3 API Reference. Pour en savoir plus sur les opérations de l'API des points de terminaison zonaux, consultez la section Autorisation des opérations de l'API des points de terminaison zonaux avec. CreateSession

Si vous ne souhaitez pas remplacer un objet existant, vous pouvez ajouter l'en-tête If-None-Match conditionnel avec la valeur de ‘*’ la RenameObject demande. Amazon S3 renvoie une 412 Precondition Failed erreur si le nom de l'objet existe déjà. Pour plus d’informations, consultez RenameObject dans la Référence d’API Amazon S3.

RenameObjectest une opération d'API de point de terminaison zonal (opération au niveau de l'objet ou du plan de données) à laquelle est enregistrée. 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 et les exemples de fichiers CloudTrail journaux pour les compartiments de répertoire.

S3 Express One Zone est la seule classe de stockage qui prend en chargeRenameObject, au même prix quePUT, COPYPOST, et les LIST demandes (pour 1 000 demandes) dans S3 Express One Zone. Pour plus d’informations, consultez Tarification Amazon S3.

Modification du nom d'un objet

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

Pour renommer un objet dans un bucket de répertoire
  1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans le volet de navigation, choisissez Buckets, puis cliquez sur l'onglet Buckets du répertoire. Accédez au compartiment de répertoire Amazon S3 qui contient l'objet que vous souhaitez renommer.

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

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

  5. Dans la zone Nouveau nom d’objet, saisissez le nouveau nom de l’objet.

    Note

    Si vous spécifiez le même nom d'objet qu'un objet existant, l'opération échouera et Amazon S3 renvoie une 412 Precondition Failed erreur. 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.

  6. Choisissez Renommer l'objet. Amazon S3 renommera votre objet.

Les rename-object exemples montrent comment vous pouvez utiliser la AWS CLI 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 avec une vérification conditionnelle sur celui de ETag l'objet source.

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

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 à l'aide d'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.

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 SDK pour Python pour renommer vos objets. Pour utiliser ces exemples, remplacez 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"{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}")

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.

  • Imprime un message de réussite si le changement de nom de votre objet est réussi 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 :

  • Effectue une opération de renommage conditionnel et applique deux conditions, SourceIfMatch etDestinationIfNoneMatch. 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.

  • Imprime un message de réussite si le changement de nom de votre objet est réussi, ou imprime un message d'erreur en cas d'échec ou si les conditions ne sont pas remplies.

SDK for Rust

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

L'exemple suivant montre comment renommer un objet dans le bucket de amzn-s3-demo-bucket--usw2-az1--x-s3 répertoire à l'aide du 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.

  • Renvoie un Result type pour gérer les erreurs potentielles.

Vous pouvez envoyer des requêtes REST pour renommer un objet. Pour plus d’informations, consultez RenameObject dans la Référence d’API Amazon S3.

À partir de la version 1.19.0 ou supérieure, Mountpoint pour Amazon S3 permet de renommer les objets dans S3 Express One Zone. Pour plus d’informations sur Mountpoint, consultez Utilisation de Mountpoint.