Tutoriel : Utiliser un dépôt partitionné avec AWS CLI (s3)

Un dépôt partitionné vous permet de déposer de manière efficace et fiable des objets volumineux dans un bucket. Son principe est de décomposer un objet en parties plus petites en vue d’un dépôt parallèle.

Cette fonctionnalité est à la fois compatible avec les commandes s3 de haut niveau et les commandes s3api de bas niveau.

Pour les opérations nécessitant un contrôle plus granulaire, voir Utiliser un dépôt partitionné avec AWS CLI (s3api).

Récupérer la somme de contrôle MD5 de votre objet

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

La somme de contrôle MD5 est un nombre hexadécimal de 32 caractères constituant l’empreinte numérique de votre objet. Pour déposer un objet en une seule partie (généralement pour des objets de 5 Go ou moins), la somme de contrôle MD5 de l’objet correspond automatiquement à l’ETag fourni au terme du dépôt.

Ce n’est pas le cas lors du processus de dépôt partitionné automatiquement initié pour les objets volumineux lorsque les commandes de haut niveau sont utilisées. En effet, les objets volumineux sont divisés en plusieurs parties et sont déposés séparément. Une fois toutes les parties déposées, elles sont combinées pour former l’objet original. Comme s3 additionne les sommes de contrôle de chaque partie dans un dépôt partitonné pour calculer les ETags, l’ETag renvoyé ne correspond alors pas à la somme de contrôle MD5 d’origine de l’objet.

Avant de lancer un dépôt partitionné à l’aide de commandes s3 de haut niveau, vous devez donc calculer la somme de contrôle MD5 de votre objet afin d’en garantir l’intégrité.

  1. Naviguez jusqu’à l’emplacement de l’objet volumineux que vous souhaitez déposer.

    Exemple de requête
    $ cd LOCAL_PATH
  2. Exécutez la commande suivante pour calculer la somme de contrôle MD5 de votre objet :

    Exemple de requête
    $ md5 LARGE_OBJECT_TO_UPLOAD

La somme de contrôle MD5 de votre objet est renvoyée.

Créer et finaliser un dépôt partitionné 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 déposer un fichier volumineux dans votre bucket et automatiquement déclencher le processus de dépôt partitionné, utilisez la commande cp en suivant cette syntaxe :

Exemple de requête
$ aws s3 cp LOCAL_PATH/LARGE_OBJECT_TO_UPLOAD s3://BUCKET/ \
   --profile YOUR_PROFILE \
   --debug \
   --acl public-read \
   --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 "id=USER_ID, id=USER_ID" \
   --cache-control "no-cache" \
   --content-disposition "inline" \
   --content-encoding "gzip" \
   --content-language "en" \
   --content-type text/plain \
   --expires "2024-03-01T00:00:00Z" \
   --metadata "{\"md5\": \"98ecc26f79229e2388dba73f8f521a95\"}" \
   --metadata-directive "REPLACE" \
   --expected-size 123456789 \
   --website-redirect "/new-page.html" \
   --endpoint https://oos.eu-west-2.outscale.com

Certains des attributs utilisés dans cet exemple de requête sont optionnels mais sont fortement recommandés si vous souhaitez garder une trace du processus de dépôt partitionné. Ces attributs sont debug, metadata et expected-size.

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

  • s3://BUCKET/LARGE_OBJECT_TO_UPLOAD : Le chemin d’accès à l’objet volumineux que vous souhaitez déposer dans le bucket. S3 lance automatiquement le processus de dépôt partitionné pour les objets volumineux en les divisant en parties plus petites, de sorte à assurer un dépôt efficace et fiable. Ces parties sont ensuite réassemblées à l’emplacement désigné dans le bucket.

  • (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 le rapport détaillé de l’opération, ce qui est utile pour analyser et résoudre les problèmes. Dans le contexte du dépôt partitionné, il permet de voir exactement comment votre objet a été partitionné puis réassemblé, ainsi que les ETags attribués à chaque partie.

    • 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 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 : Un ou plusieurs ID d’utilisateurs auxquels vous accordez la permission write.

  • (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="<NAME_OF_FILE>").

  • (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) expected-size : Spécifie la taille attendue du dépôt, en octets. Cette valeur est utile pour les objets de plus de 50 Go, car elle optimise l’allocation des parties et l’utilisation des ressources au cours du processus de dépôt partitionné;

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

    • key : Le nom de la metadata.

    • value : La valeur de la metadata.

Comme le montre l’exemple ci-dessous, vous pouvez stocker la somme de contrôle MD5 de votre objet à l’aide de l’attribut 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) website-redirect : 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.

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

Votre objet volumineux est déposé dans votre bucket, le processus de dépôt partitionné étant automatiquement initié en arrière-plan. Pour récupérer des informations sur l’objet, voir Obtenir des informations sur les metadata d’un objet.

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.