Comment utiliser l'interface de la ligne de commande AWS pour charger un fichier volumineux en plusieurs parties sur Amazon S3 ?
Je souhaite copier un fichier volumineux dans un compartiment Amazon Simple Storage Service (Amazon S3) en plusieurs parties ou utiliser le chargement partitionné. Je souhaite utiliser l'interface de la ligne de commande AWS (AWS) pour charger le fichier.
Brève description
Utilisez l'interface de la ligne de commande AWS avec des commandes aws s3 de haut niveau ou des commandes aws s3api de bas niveau pour charger des fichiers volumineux sur Amazon S3. Pour plus d'informations sur ces deux niveaux de commande, consultez Utilisation d'Amazon S3 avec l'interface de la ligne de commande AWS.
Important : Il est recommandé d'utiliser les commandes aws s3, telles que aws s3 cp, pour les chargements et téléchargements partitionnés. Cela est dû au fait que les commandes aws s3 effectuent automatiquement un chargement et un téléchargement partitionnés en fonction de la taille du fichier. Utilisez les commandes aws s3api, telles que aws s3api create-multipart-upload, uniquement lorsque les commandes aws s3 ne prennent pas en charge un chargement spécifique. Par exemple, le chargement partitionné implique plusieurs serveurs, ou vous arrêtez manuellement un chargement partitionné pour le reprendre ultérieurement. Ou bien, la commande aws s3 ne prend pas en charge un paramètre de requête obligatoire.
Résolution
**Remarque :**Si des erreurs surviennent lorsque vous exécutez des commandes de l’interface de la ligne de commande AWS (AWS CLI), consultez la page Résoudre les erreurs liées à AWS CLI. Vérifiez également que vous utilisez la version la plus récente de l'interface AWS CLI.
Avant de charger le fichier, calculez la valeur de la somme de contrôle MD5 du fichier comme référence pour les contrôles d'intégrité après le chargement.
Utiliser des commandes aws s3 de haut niveau
Pour utiliser une commande aws s3 de haut niveau pour votre chargement partitionné, exécutez la commande suivante :
$ aws s3 cp large_test_file s3://DOC-EXAMPLE-BUCKET/
Cet exemple utilise la commande aws s3 cp pour effectuer automatiquement un chargement partitionné lorsque l'objet est volumineux. Vous pouvez également utiliser d'autres commandes aws s3 qui impliquent le chargement d'objets dans un compartiment S3. Par exemple, aws s3 sync ou aws s3 mv.
Les objets que vous chargez en plusieurs parties sur Amazon S3 ont un format ETag différent de celui des objets que vous chargez à l'aide de la requête PUT traditionnelle. Pour stocker la valeur de la somme de contrôle MD5 du fichier source en tant que référence, chargez le fichier avec la valeur de la somme de contrôle sous forme de métadonnées personnalisées. Pour ajouter la valeur de la somme de contrôle MD5 en tant que métadonnées personnalisées, incluez le paramètre facultatif --metadata md5="exampleMD5value1234/4Q" dans la commande de chargement :
$ aws s3 cp large_test_file s3://DOC-EXAMPLE-BUCKET/ --metadata md5="examplemd5value1234/4Q"
Pour utiliser davantage la bande passante et les ressources de votre hôte, augmentez le nombre maximum de requêtes simultanées définies dans la configuration de votre interface de la ligne de commande AWS. Par défaut, l'interface de la ligne de commande AWS utilise un maximum de 10 requêtes simultanées. Cette commande définit le nombre maximum de requêtes simultanées à 20 :
$ aws configure set default.s3.max_concurrent_requests 20
Utiliser des commandes aws s3api de bas niveau
-
Divisez en plusieurs parties le fichier que vous souhaitez charger.
Conseil : Si vous utilisez un système d'exploitation Linux, utilisez la commande division. -
Exécutez la commande suivante pour lancer un chargement partitionné et récupérer l'ID de chargement associé.
aws s3api create-multipart-upload --bucket DOC-EXAMPLE-BUCKET --key large_test_file
La commande renvoie une réponse contenant l'UploadID :
-
Copiez la valeur UploadID comme référence pour les étapes ultérieures.
-
Exécutez la commande suivante pour charger la première partie du fichier.
aws s3api upload-part --bucket DOC-EXAMPLE-BUCKET --key large_test_file --part-number 1 --body large_test_file.001 --upload-id exampleTUVGeKAk3Ob7qMynRKqe3ROcavPRwg92eA6JPD4ybIGRxJx9R0VbgkrnOVphZFK59KCYJAO1PXlrBSW7vcH7ANHZwTTf0ovqe6XPYHwsSp7eTRnXB1qjx40Tk --content-md5 exampleaAmjr+4sRXUwf0w==
Remplacez toutes les valeurs par celles de votre compartiment, de votre fichier et de votre chargement partitionné. La commande renvoie une réponse contenant une valeur ETag pour la partie du fichier que vous avez chargée. Pour plus d'informations sur chaque paramètre, voir upload-part.
-
Copiez la valeur ETag comme référence pour les étapes ultérieures.
-
Répétez les étapes 4 et 5 pour chaque partie du fichier. Assurez-vous d'augmenter le numéro de partie pour chaque nouvelle partie que vous chargez.
-
Après avoir chargé toutes les parties du fichier, exécutez la commande suivante pour répertorier les parties chargées et confirmer que la liste est complète :
aws s3api list-parts --bucket DOC-EXAMPLE-BUCKET --key large_test_file --upload-id exampleTUVGeKAk3Ob7qMynRKqe3ROcavPRwg92eA6JPD4ybIGRxJx9R0VbgkrnOVphZFK59KCYJAO1PXlrBSW7vcH7ANHZwTTf0ovqe6XPYHwsSp7eTRnXB1qjx40Tk
-
Compilez les valeurs ETag pour chaque partie du fichier que vous avez chargée dans un fichier au format JSON.
Exemple de fichier JSON :{ "Parts": [{ "ETag": "example8be9a0268ebfb8b115d4c1fd3", "PartNumber":1 }, .... { "ETag": "example246e31ab807da6f62802c1ae8", "PartNumber":4 }] }
-
Nommez le fichier fileparts.json.
-
Exécutez la commande suivante pour terminer le chargement partitionné.
aws s3api complete-multipart-upload --multipart-upload file://fileparts.json --bucket DOC-EXAMPLE-BUCKET --key large_test_file --upload-id exampleTUVGeKAk3Ob7qMynRKqe3ROcavPRwg92eA6JPD4ybIGRxJx9R0VbgkrnOVphZFK59KCYJAO1PXlrBSW7vcH7ANHZwTTf0ovqe6XPYHwsSp7eTRnXB1qjx40Tk
Remplacez la valeur de --multipart-upload par le chemin d'accès au fichier au format JSON avec les ETags que vous avez créés. Si la commande précédente aboutit, vous recevez une réponse similaire à celle ci-dessous :
{ "ETag": "\\"exampleae01633ff0af167d925cad279-2\\"", "Bucket": "DOC-EXAMPLE-BUCKET", "Location": "https://DOC-EXAMPLE-BUCKET.s3.amazonaws.com/large_test_file", "Key": "large_test_file" }
Résoudre les échecs de chargement
Si vous utilisez les commandes aws s3 de haut niveau pour un chargement partitionné et que le chargement échoue, vous devez démarrer un nouveau chargement partitionné. Les échecs de chargement partitionné se produisent en raison d'un délai d'expiration ou d'une annulation manuelle. Dans la plupart des cas, l'interface de la ligne de commande AWS annule automatiquement le chargement partitionné, puis supprime tous les fichiers partitionnés que vous avez créés. Ce processus peut prendre plusieurs minutes. Si vous utilisez les commandes aws s3api et que le processus est interrompu, supprimez les parties incomplètes du chargement, puis chargez-les à nouveau.
Pour supprimer les parties incomplètes, utilisez l'action lifecycle AbortIncompleteMultipartUpload. Vous pouvez également utiliser les commandes aws s3api pour supprimer les parties incomplètes :
-
Exécutez la commande suivante pour répertorier les chargements partitionnés incomplets de fichiers.
aws s3api list-multipart-uploads --bucket DOC-EXAMPLE-BUCKET
Remplacez la valeur de --bucket par le nom de votre compartiment.
-
La commande renvoie un message similaire à celui qui suit avec les parties du fichier qui n'ont pas été traitées :
{ "Uploads": [ { "Initiator": { "DisplayName": "multipartmessage", "ID": "290xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx " }, "Initiated": "2016-03-31T06:13:15.000Z", "UploadId": "examplevQpHp7eHc_J5s9U.kzM3GAHeOJh1P8wVTmRqEVojwiwu3wPX6fWYzADNtOHklJI6W6Q9NJUYgjePKCVpbl_rDP6mGIr2AQJNKB_A-", "StorageClass": "STANDARD", "Key": "", "Owner": { "DisplayName": "multipartmessage", "ID": "290xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx " } } ] }
-
Exécutez la commande suivante pour supprimer les parties incomplètes :
aws s3api abort-multipart-upload --bucket DOC-EXAMPLE-BUCKET --key large_test_file --upload-id examplevQpHp7eHc_J5s9U.kzM3GAHeOJh1P8wVTmRqEVojwiwu3wPX6fWYzADNtOHklJI6W6Q9NJUYgjePKCVpbl_rDP6mGIr2AQJNKB
Informations connexes
Chargement et copie d'objets à l'aide du chargement partitionné
Vidéos associées


Contenus pertinents
- demandé il y a 4 moislg...
- demandé il y a un anlg...
- demandé il y a 10 moislg...
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a 3 ans
- AWS OFFICIELA mis à jour il y a un an