Copier un objet sur un bucket

Vous pouvez copier un objet depuis l’un de vos buckets dans un autre bucket que vous possédez, ou dans le bucket d’un autre utilisateur si vous avez les permissions appropriées. Vous pouvez également copier un objet depuis le bucket d’un autre utilisateur dans l’un de vos buckets. Pour en savoir plus, voir Référence des Access Control List (ACL).

Vous êtes le propriétaire de la copie de l’objet, qui est indépendante de l’objet source. Vous ne pouvez pas changer la clé de l’objet une fois celui-ci copié dans le bucket. Si vous copiez un objet avec le même nom qu’un autre objet déjà contenu dans le bucket, l’objet que vous déposez remplace l’ancien objet. Si le versioning du bucket est activé, cet ancien objet est conservé comme version précédente. Pour en savoir plus, voir Activer ou désactiver le versioning d’un bucket.

Cette action renvoie également un ETag. Cet élément est nécessaire pour créer un dépôt partitionné. Pour en savoir plus, voir Créer un dépôt partitionné.

Copier un objet sur un bucket avec AWS CLI (s3api)

Avant de commencer : Installez et configurez AWS CLI et définissez votre profil. Pour en savoir plus, voir Installer et configurer AWS CLI.

Pour copier un objet dans l’un de vos buckets, utilisez la commande copy-object en suivant cette syntaxe :

Exemple de requête
$ aws s3api copy-object \
    --profile YOUR_PROFILE \
    --copy-source SOURCE_BUCKET/SOURCE_OBJECT \
    --key OBJECT \
    --bucket DESTINATION_BUCKET \
    --acl private \
    --grant-full-control "id=USER_ID, id=USER_ID" \
    --grant-read "id=USER_ID, id=USER_ID" \
    --grant-read-acp "id=USER_ID, id=USER_ID" \
    --grant-write-acp "id=USER_ID, id=USER_ID" \
    --cache-control "no-cache" \
    --content-disposition "inline" \
    --content-encoding  "gzip" \
    --content-language "en" \
    --content-type "image/png" \
    --copy-source-if-match "\"b4fb2aaa356797d9a28bfc640a973720\"" \
    --copy-source-if-modified-since "2023-01-01T00:00:00Z" \
    --copy-source-if-none-match "\"b4fb2aaa356797d9a28bfc640a973720\"" \
    --copy-source-if-unmodified-since "2023-01-01T00:00:00Z" \
    --expires "2024-01-01T00:00:00Z" \
    --metadata "{\"key1\": \"value1\", \"key2\": \"value2"}\" \
    --metadata-directive "COPY" \
    --tagging "{\"key1\": \"value1\", \"key2\": \"value2"}\" \
    --tagging-directive "REPLACE" \
    --website-redirect-location "/new-page.html" \
    --object-lock-mode "COMPLIANCE" \
    --object-lock-retain-until-date "2025-01-01T00:00:00Z" \
    --endpoint https://oos.eu-west-2.outscale.com

Cette commande contient les attributs suivants que vous devez spécifier :

  • (optionnel) profile : Le profil nommé que vous voulez utiliser, créé pendant la configuration d’AWS CLI. Pour en savoir plus, voir Installer et configurer AWS CLI.

  • copy-source : Le chemin d’accès de l’objet que vous voulez copier.

  • key : La clé pour le nouvel objet.

    Vous pouvez utilisez le même préfixe dans les clés de plusieurs objets, au format suivant : prefix/key1, prefix/key2, et ainsi de suite.

    Cette action crée une architecture virtuelle dans votre bucket qui vous permet de retrouver vos objets plus vite lorsque vous les listez. Pour en savoir plus, voir Lister les objets d’un bucket.

  • bucket : Le nom du bucket où vous souhaitez que l’objet soit copié.

    • Lorsque vous spécifiez une nouvelle permission, celle-ci remplace toutes les anciennes. Par conséquent, vous devez spécifiez toutes les permissions dans une seule commande.

    • Lorsque vous spécifiez des permissions, vous devez également spécifier votre adresse e-mail. Sinon, vous perdez les permissions pour votre ressource.

    • Si vous êtes le propriétaire du bucket, la seule permission que vous ne pouvez jamais perdre est la gestion de l’ACL.

    Pour en savoir plus à propos des permissions existantes, voir Obtenir des informations sur l’ACL d’un bucket et Obtenir des informations sur l’ACL d’un objet.

  • (optionnel) acl : Les permissions que vous accordez pour votre objet (private | public-read | public-read-write | authenticated-read | bucket-owner-read | bucket-owner-full-control).

  • (optionnel) grant-full-control : Un ou plusieurs ID d’utilisateurs auxquels vous accordez la permission full-control.

  • (optionnel) grant-read : Un ou plusieurs ID d’utilisateurs auxquels vous accordez la permission read.

  • (optionnel) grant-read-acp : Un ou plusieurs ID d’utilisateurs auxquels vous accordez la permission read-acp.

  • (optionnel) grant-write-acp : Un ou plusieurs ID d’utilisateurs auxquels vous accordez la permission write-acp.

    • Vous devez spécifier des ID utilisateur S3. Vous pouvez récupérer les ID utilisateur S3 via les méthodes Lister vos buckets et Lister les objets d’un bucket.

    • Vous pouvez également spécifier des adresses e-mail utilisateur en utilisant le format emailaddress=name@domain.com.

  • (optionnel) cache-control : Comment vous souhaitez que l’objet soit traité en termes de mise en cache (max-age | max-stale | min-fresh | no-cache | no-store | no-transform | only-if-cached | stale-if-error).

  • (optionnel) content-disposition : Comment vous souhaitez que l’objet soit affiché lorsque vous y accédez par le biais d’un navigateur ("inline" | "attachment" | "attachment; filename="<NOM_DU_FICHIER>"")

    • inline : Si possible, demande au navigateur d’afficher le contenu à l’intérieur de la fenêtre du navigateur. Cet attribut est utile pour les images, les PDF et autres types de médias que les navigateurs peuvent facilement interpréter.

    • attachment : Quel que soit le type de fichier, demande au navigateur de télécharger le contenu au lieu de l’afficher en ligne. Le fichier est ainsi enregistré localement.

    • "attachment; filename="<NOM_DU_FICHIER>"" : Quel que soit le type de fichier, demande au navigateur de télécharger le contenu au lieu de l’afficher en ligne. Le fichier est ainsi enregistré localement sous le nom de fichier spécifié.

  • (optionnel) content-encoding : Le format d’encodage de l’objet (gzip | compress | deflate | identity | br).

  • (optionnel) content-language : La langue dans laquelle le contenu de l’objet est rédigé, en code de langue (format ISO 639).

  • (optionnel) content-type : Le type MIME (Multipurpose Internet Mail Extensions) de l’objet.

    Un attribut content-type mal défini ou absent peut entraîner une mauvaise interprétation ou un mauvais traitement des objets par les navigateurs. En conséquence, vous pouvez rencontrer des difficultés pour accéder à vos objets ou les visualiser à l’aide de votre navigateur préféré.

  • (optionnel) copy-source-if-match : Copie l’objet uniquement si son ETag correspond à l’ETag indiqué pour cet attribut.

  • (optionnel) copy-source-if-modified-since : Copie l’objet seulement s’il a été modifié après la date et l’heure indiquées en format UTC pour cet attribut.

  • (optionnel) copy-source-if-none-match : Copie l’objet uniquement si son ETag ne correspond pas à l’ETag indiqué pour cet attribut.

  • (optionnel) copy-source-if-unmodified-since : Copie l’objet uniquement s’il n’a pas été modifié depuis la date et l’heure indiquées en format UTC pour cet attribut.

  • (optionnel) expires : La date et l’heure, en format UTC, à laquelle vous considérez que l’objet ne peut plus être mis en cache et est considéré comme périmé.

  • (optionnel) metadata : Une carte des entrées de metadata supplémentaires que vous pouvez indiquer librement.

    • (optionnel) key : Le nom de la metadata.

    • (optionnel) value : La valeur de la metadata.

  • (optionnel) metadata-directive : Indique si les metadata doivent être copiées à partir de l’objet source ou remplacées par les métadonnées fournies dans la requête (COPY ou REPLACE).

  • (optionnel) tagging : L’ensemble de balises que vous voulez associer à l’objet et qui doit être utilisé en conjonction avec l’élément TaggingDirective. L’ensemble de balises doit être au format requête URL.

  • (optionnel) tagging-directive : Indique si l’ensemble de balises doit être copié à partir de l’objet source ou remplacé par l’ensemble de balises fourni dans la requête (COPY ou REPLACE).

  • (optionnel) website-redirect-location : Si vous avez configuré le bucket de destination comme un site web, redirige les requêtes pour cet objet vers un autre objet dans le même bucket ou vers une URL externe.

  • (optionnel) object-lock-mode : Si Object Lock a été activé sur le bucket de destination, vous pouvez indiquer son mode. Pour en savoir plus, voir Configurer un Object Lock par défaut sur un bucket.

  • (optionnel) object-lock-retain-until-date : Si Object Lock a été activé sur le bucket de destination, vous pouvez indiquer la date de rétention de l’objet. Pour en savoir plus, voir Configurer un Object Lock spécifique sur un object.

  • endpoint : Le endpoint correspondant à la Région à laquelle vous voulez envoyer la requête.

La commande copy-object renvoie les éléments suivants :

  • VersionId : L’ID de la version de l’objet copié.

  • CopyObjectResult : Informations à propos de la copie. Cet élément contient les informations suivantes à propos de la copie :

    • LastModified : La date et l’heure, en format UTC, à laquelle l’objet a été copié.

    • ETag : L’ETag de votre objet dont vous avez besoin pour utiliser les commandes multipart upload. Pour en savoir plus, voir Créer un dépôt partitionné.

Exemple de résultat
 {
    "VersionId": "aJf9Af6Xzf0H00000000001I4j3QKItW",
    "CopyObjectResult": {
        "LastModified": "2017-01-05T13:28:34.676Z",
        "ETag": "fae4684b3d9544fababdd01e9a620584"
    }
}

Copier un objet sur un bucket avec AWS CLI (s3)

Avant de commencer : Installez et configurez AWS CLI et définissez votre profil. Pour en savoir plus, voir Installer et configurer AWS CLI.

Pour copier un objet dans l’un de vos buckets, utilisez la commande cp en suivant cette syntaxe :

Si vous souhaitez déplacer l’objet plutôt que le copier, remplacez la commande cp par la commande mv.

$ aws s3 cp s3://SOURCE_BUCKET/SOURCE_OBJECT s3://DESTINATION_BUCKET/DESTINATION_OBJECT \
    --profile YOUR_PROFILE \
    --debug \
    --dryrun \
    --acl public-read \
    --cache-control "no-cache" \
    --content-disposition "inline" \
    --content-encoding "gzip" \
    --content-language "en" \
    --content-type image/png \
    --expires "2024-03-01T00:00:00Z" \
    --metadata '{"key1": "value1", "key2": "value2"}' \
    --copy-props none \
    --expected-size 1234 \
    --website-redirect "/new-page.html" \
    --endpoint https://oos.eu-west-2.outscale.com

Cette commande contient les attributs suivants que vous devez spécifier : * s3://SOURCE_BUCKET/SOURCE_OBJECT : Le chemin vers l’objet que vous souhaitez copier. * s3://DESTINATION_BUCKET : Le nom du bucket où vous souhaitez que l’objet soit copié. * (optionnel)/DESTINATION_OBJECT : Le nom de l’objet copié, si vous souhaitez lui attribuer un nom différent de l’objet source. * (optionnel) profile : Le profil nommé que vous voulez utiliser, créé pendant la configuration d’AWS CLI. Pour en savoir plus, voir Installer et configurer AWS CLI. * (optionnel) debug : Si inclus, renvoie un rapport détaillé de l’opération. Cet attribut est utile pour analyser et résoudre les problèmes que vous pouvez rencontrer. * (optionnel) dryrun : Fournit une vue d’ensemble des opérations effectuées par la commande sans pour autant l’exécuter. Vous pouvez utiliser cet attribut comme mesure de sécurité pour examiner l’impact d’une commande avant de l’exécuter. * (optionnel) acl : Les permissions pour la copie de l’objet (private | public-read | public-read-write | authenticated-read | bucket-owner-read | bucket-owner-full-control). * (optionnel) cache-control : Comment vous souhaitez que la copie de l’objet soit gérée en termes de cache (max-age | max-stale | min-fresh | no-cache | no-store | no-transform | only-if-cached | stale-if-error). * (optionnel) content-disposition : Comment vous souhaitez que l’objet soit affiché lorsque vous y accédez par le biais d’un navigateur ("inline" | "attachment" | "attachment; filename="<NOM_DU_FICHIER>"") inline : Si possible, demande au navigateur d’afficher le contenu à l’intérieur de la fenêtre du navigateur. Cet attribut est utile pour les images, les PDF et autres types de médias que les navigateurs peuvent facilement interpréter. attachment : Quel que soit le type de fichier, demande au navigateur de télécharger le contenu au lieu de l’afficher en ligne. Le fichier est ainsi enregistré localement. ** "attachment; filename="<NOM_DU_FICHIER>"" : Quel que soit le type de fichier, demande au navigateur de télécharger le contenu au lieu de l’afficher en ligne. Le fichier est ainsi enregistré localement sous le nom de fichier spécifié. * (optionnel) content-encoding : Le format d’encodage de l’objet (gzip | compress | deflate | identity | br). * (optionnel) content-language : La langue dans laquelle le contenu de l’objet est rédigé, en code de langue (format ISO 639). * (optionnel) content-type : Le type MIME (Multipurpose Internet Mail Extensions) de l’objet.

+

Un attribut content-type mal défini ou absent peut entraîner une mauvaise interprétation ou un mauvais traitement des objets par les navigateurs. En conséquence, vous pouvez rencontrer des difficultés pour accéder à vos objets ou les visualiser à l’aide de votre navigateur préféré.

  • (optionnel) expires : La date et l’heure, en format UTC, à laquelle vous considérez que l’objet ne peut plus être mis en cache et est considéré comme périmé.

  • (optionnel) metadata : Une carte des entrées de metadata supplémentaires que vous pouvez indiquer librement.

    • (optionnel) key : Le nom de la metadata.

    • (optionnel) value : La valeur de la metadata.

  • (optionnel) copy-props : Détermine les propriétés que vous souhaitez copier depuis l’objet source (none | metadata-directive | default).

    • none ne copie aucune des propriétés de l’objet source.

    • metadata-directive copie les valeurs suivantes depuis l’objet source : content-type, content-language, content-encoding, content-disposition, cache-control, expires, et metadata.

    • default-value copie les tags et les metadata spécifiées par la valeur metadata-directive de l’objet source.

  • (optionnel) expected-size : Si l’objet est supérieur à 50 Go, spécifie la taille attendue du téléchargement, en octets. Cet attribut est utile si vous souhaitez confirmer l’intégrité ou la taille attendue du fichier téléchargé. Pour en savoir plus, voir Tutoriel : Utiliser un dépôt partitionné avec AWS CLI (s3).

  • (optionnel) website-redirect : Si vous avez configuré le bucket comme un site web, redirige les demandes pour cet objet vers un autre objet dans le même bucket ou vers une URL externe.

  • endpoint : Le endpoint correspondant à la Région à laquelle vous voulez envoyer la requête.

Copier un objet sur un bucket avec s3cmd

Vous pouvez gérer vos ressources de stockage objet en utilisant des commandes s3cmd. Pour en savoir plus, voir s3cmd.

Pages connexes

AWS™ et Amazon Web Services™ sont des marques de commerce d’Amazon Technologies, Inc. ou de ses affiliées aux États-Unis et/ou dans les autres pays.