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 Access Control List.

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

Cette fonctionnalité n’est pas disponible depuis Cockpit. Cette documentation décrit uniquement la procédure à l’aide d’AWS CLI.

Pour copier un objet dans l’un de vos buckets, utilisez la commande copy-object 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" \
    --endpoint ENDPOINT

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 Utiliser 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 email. 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 email utilisateur en utilisant le format emailaddress=name@domain.com.

  • endpoint : Le endpoint correspondant à la Région vers laquelle vous voulez envoyer la requête, selon le format suivant : https://oos.<REGION>.outscale.com

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

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

    • LastModified : La date et l’heure à 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
 {
    "CopyObjectResult": {
        "LastModified": "2017-01-05T13:28:34.676Z",
        "ETag": "fae4684b3d9544fababdd01e9a620584"
    }
}
  • Vous pouvez également 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 ENDPOINT
  • Vous pouvez également gérer vos ressources de stockage objet en utilisant des commandes s3cmd. Pour en savoir plus, voir s3cmd (disponible en anglais uniquement).

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.