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 BUCKET_SOURCE/OBJECT_SOURCE \
    --key OBJECT \
    --bucket 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 bucket de destination.

    • 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 le contenu soit affiché (inline | attachment | attachment; filename="<NOM_DU_FICHIER>")

  • (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.

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

  • (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.

Vous pouvez effectuer cette action en utilisant une commande s3 suivant cette syntaxe :

$ aws s3 mv --profile $PROFILE s3://YOUR_SOURCE_BUCKET/YOUR_SOURCE_OBJECT s3://YOUR_TARGET_BUCKET --endpoint https://oos.eu-west-2.outscale.com

Copier un objet sur un bucket avec s3cmd

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

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.