Utilisation des commandes (s3) de haut niveau dans l’AWS CLI - AWS Command Line Interface

Cette documentation concerne uniquement la version 1 de l’AWS CLI. Pour la documentation relative à la version 2 de l’AWS CLI, consultez le Guide de l’utilisateur de la version 2.

Utilisation des commandes (s3) de haut niveau dans l’AWS CLI

Cette rubrique décrit certaines des commandes que vous pouvez utiliser pour gérer les compartiments et les objets Amazon S3 à l’aide des commandes aws s3 de l’AWS CLI. Pour les commandes non abordées dans cette rubrique et pour des exemples de commandes supplémentaires, consultez les commandes aws s3 dans la Référence de l’AWS CLI.

Les commandes de haut niveau aws s3 simplifient la gestion des objets Amazon S3. Ces commandes vous permettent de gérer le contenu d’Amazon S3 en lui-même et avec les annuaires locaux.

Prérequis

Pour exécuter les commandes s3, vous devez respecter les conditions requises suivantes :

Avant de commencer

Cette section décrit quelques points à prendre en compte avant d’utiliser des commandes aws s3.

Chargement d’objets volumineux

Lorsque vous utilisez des commandes aws s3 pour charger des objets volumineux dans un compartiment Amazon S3, AWS CLI effectue automatiquement un chargement partitionné. Vous ne pouvez pas reprendre un chargement qui échoue à l’aide de ces commandes aws s3.

Si le chargement partitionné échoue en raison d’un délai d’expiration, ou si vous l’avez annulé manuellement dans l’AWS CLI, l’AWS CLI arrête le chargement et nettoie les fichiers créés. Ce processus peut prendre plusieurs minutes.

Si le processus de chargement ou de nettoyage partitionné est annulé en raison d’une commande d’arrêt ou d’une défaillance du système, les fichiers créés restent dans le compartiment Amazon S3. Pour nettoyer le chargement partitionné, utilisez la commande s3api abort-multipart-upload.

Propriétés des fichiers et balises dans les copies partitionnées

Lorsque vous utilisez les commandes de la version 1 de l’AWS CLI dans l’espace de noms aws s3 pour copier un fichier d’un emplacement de compartiment S3 vers un autre emplacement de compartiment S3, et que cette opération utilise la copie partitionnée, aucune propriété de fichier de l’objet source n’est copiée vers l’objet de destination.

Création d’un compartiment

Utilisez la commande s3 mb pour créer un compartiment. Les noms de compartiment doivent être globalement uniques (dans tout Amazon S3) et conformes à DNS.

Les noms de compartiment peuvent contenir des lettres minuscules, des chiffres, des traits d’union et des points. Les noms de compartiment peuvent uniquement commencer et se terminer par une lettre ou un chiffre, et ils ne peuvent pas contenir de point à la suite d’un tiret ou d’un autre point.

Syntaxe

$ aws s3 mb <target> [--options]

L’exemple suivant crée le compartiment s3://amzn-s3-demo-bucket.

$ aws s3 mb s3://amzn-s3-demo-bucket

Affichage de la liste des compartiments et des objets

Pour répertorier les compartiments, dossiers ou objets, utilisez la commande s3 ls. L’utilisation de la commande sans cible ni options permet de répertorier tous les compartiments.

Syntaxe

$ aws s3 ls <target> [--options]

Pour voir quelques options courantes à utiliser avec cette commande, ainsi que des exemples, consultez Options fréquemment utilisées pour les commandes s3. Pour obtenir la liste complète des options disponibles, consultez s3 ls dans la Référence des commandes de l’AWS CLI.

L’exemple suivant répertorie tous les compartiments Amazon S3.

$ aws s3 ls 2018-12-11 17:08:50 amzn-s3-demo-bucket1 2018-12-14 14:55:44 amzn-s3-demo-bucket2

La commande suivante affiche la liste de tous les objets et préfixes d’un compartiment. Dans cet exemple de sortie, le préfixe example/ possède un fichier nommé MyFile1.txt.

$ aws s3 ls s3://amzn-s3-demo-bucket PRE example/ 2018-12-04 19:05:48 3 MyFile1.txt

Vous pouvez filtrer la sortie vers un préfixe spécifique en l’incluant dans la commande. La commande suivante permet d’afficher la liste des objets dans nom-compartiment/exemple/ (en d’autres termes, les objets dans nom-compartiment filtrés par le préfixe exemple/).

$ aws s3 ls s3://amzn-s3-demo-bucket/example/ 2018-12-06 18:59:32 3 MyFile1.txt

Pour afficher uniquement les compartiments et les objets d’une région spécifique, utilisez les options --region

$ aws s3 ls --region us-east-2 2018-12-06 18:59:32 3 MyFile1.txt

Si vous disposez d’une longue liste de compartiments et d’objets, vous pouvez paginer les résultats à l’aide des options --max-items ou --page-size. L’option --max-items limite le nombre total de compartiments et d’objets renvoyés lors d’un appel et l’option --page-size limite le nombre d’objets répertoriés sur une page.

$ aws s3 ls --max-items 100 --page-size 10

Pour plus d’informations sur la pagination, consultez Utilisation du paramètre --page-size et Utilisation du paramètre --max-items.

Suppression de compartiments

Pour supprimer un compartiment, utilisez la commande s3 rb.

Syntaxe

$ aws s3 rb <target> [--options]

L’exemple suivant supprime le compartiment s3://amzn-s3-demo-bucket.

$ aws s3 rb s3://amzn-s3-demo-bucket

Par défaut, le compartiment doit être vide pour que l’opération aboutisse. Pour supprimer un compartiment non vide, vous devez inclure l’option --force. Si vous utilisez un compartiment avec gestion des versions qui contient des objets précédemment supprimés, mais conservés, cette commande ne vous permet pas de supprimer le compartiment. Vous devez d’abord supprimer tout le contenu.

L’exemple suivant supprime tous les objets et préfixes du compartiment, puis supprime le compartiment lui-même.

$ aws s3 rb s3://amzn-s3-demo-bucket --force

Suppression d’objets

Pour supprimer des objets dans un compartiment ou dans votre répertoire local, utilisez la commande s3 rm.

Syntaxe

$ aws s3 rm <target> [--options]

Pour voir quelques options courantes à utiliser avec cette commande, ainsi que des exemples, consultez Options fréquemment utilisées pour les commandes s3. Pour obtenir la liste complète des options, consultez s3 rm dans la Référence des commandes de l’AWS CLI.

L’exemple suivant supprime filename.txt de s3://amzn-s3-demo-bucket/example.

$ aws s3 rm s3://amzn-s3-demo-bucket/example/filename.txt

L’exemple suivant supprime tous les objets de s3://amzn-s3-demo-bucket/example à l’aide de l’option --recursive.

$ aws s3 rm s3://amzn-s3-demo-bucket/example --recursive

Déplacement d’objets

Utilisez la commande s3 mv pour déplacer des objets depuis compartiment ou un répertoire local. La commande s3 mv copie l’objet ou le fichier source vers la destination spécifiée, puis supprime l’objet ou le fichier source.

Syntaxe

$ aws s3 mv <source> <target> [--options]

Pour voir quelques options courantes à utiliser avec cette commande, ainsi que des exemples, consultez Options fréquemment utilisées pour les commandes s3. Pour obtenir la liste complète des options disponibles, consultez s3 mv dans la Référence des commandes de l’AWS CLI.

Avertissement

Si vous utilisez n’importe quel type d’ARN ou d’alias de point d’accès dans vos URI source ou de destination Amazon S3, vous devez faire très attention à ce que vos URI Amazon S3 source et de destination correspondent à des compartiments sous-jacents différents. Si les compartiments source et de destination sont identiques, le fichier ou l’objet source peut être déplacé sur lui-même, ce qui peut entraîner la suppression accidentelle de votre fichier ou objet source. Pour vérifier que les compartiments source et de destination ne sont pas identiques, utilisez le paramètre --validate-same-s3-paths ou définissez la variable d’environnement AWS_CLI_S3_MV_VALIDATE_SAME_S3_PATHS sur true.

L’exemple suivant déplace tous les objets de s3://amzn-s3-demo-bucket/example vers s3://amzn-s3-demo-bucket/.

$ aws s3 mv s3://amzn-s3-demo-bucket/example s3://amzn-s3-demo-bucket/

L’exemple suivant déplace un fichier local de votre répertoire de travail actuel vers le compartiment Amazon S3 avec la commande s3 mv.

$ aws s3 mv filename.txt s3://amzn-s3-demo-bucket

L’exemple suivant déplace un fichier de votre compartiment Amazon S3 vers votre répertoire de travail actuel, où ./ spécifie votre répertoire de travail actuel.

$ aws s3 mv s3://amzn-s3-demo-bucket/filename.txt ./

Copie d’objets

Utilisez la commande s3 cp pour copier des objets depuis un compartiment ou un répertoire local.

Syntaxe

$ aws s3 cp <source> <target> [--options]

Vous pouvez utiliser le paramètre Dash pour la diffusion de fichiers vers une entrée standard (stdin) ou une sortie standard (stdout).

Avertissement

Si vous utilisez PowerShell, le shell peut modifier le codage d’un CRLF ou ajouter un CRLF à une entrée ou sortie dirigée, ou à une sortie redirigée.

La commande s3 cp utilise la syntaxe suivante pour charger un flux de fichiers de stdin vers un compartiment spécifié.

Syntaxe

$ aws s3 cp - <target> [--options]

La commande s3 cp utilise la syntaxe suivante pour télécharger un flux de fichiers Amazon S3 pour stdout.

Syntaxe

$ aws s3 cp <target> [--options] -

Pour voir quelques options courantes à utiliser avec cette commande, ainsi que des exemples, consultez Options fréquemment utilisées pour les commandes s3. Pour obtenir la liste complète des options disponibles, consultez s3 cp dans la Référence des commandes de l’AWS CLI.

L’exemple suivant copie tous les objets de s3://amzn-s3-demo-bucket/example vers s3://amzn-s3-demo-bucket/.

$ aws s3 cp s3://amzn-s3-demo-bucket/example s3://amzn-s3-demo-bucket/

L’exemple suivant copie un fichier local de votre répertoire de travail actuel dans le compartiment Amazon S3 avec la commande s3 cp.

$ aws s3 cp filename.txt s3://amzn-s3-demo-bucket

L’exemple suivant copie un fichier de votre compartiment Amazon S3 vers votre répertoire de travail actuel, où ./ spécifie votre répertoire de travail actuel.

$ aws s3 cp s3://amzn-s3-demo-bucket/filename.txt ./

L’exemple suivant utilise echo pour diffuser le texte « hello world » dans le fichier s3://bucket-name/filename.txt.

$ echo "hello world" | aws s3 cp - s3://amzn-s3-demo-bucket/filename.txt

L’exemple suivant diffuse le fichier s3://amzn-s3-demo-bucket/filename.txt dans stdout et en imprime le contenu dans la console.

$ aws s3 cp s3://amzn-s3-demo-bucket/filename.txt - hello world

L’exemple suivant diffuse le contenu de s3://bucket-name/pre dans stdout, utilise la commande bzip2 pour compresser les fichiers et charge le nouveau fichier compressé nommé key.bz2 dans s3://bucket-name.

$ aws s3 cp s3://amzn-s3-demo-bucket/pre - | bzip2 --best | aws s3 cp - s3://amzn-s3-demo-bucket/key.bz2

Synchronisation d’objets

La commande s3 sync synchronise les contenus d’un compartiment et d’un répertoire ou le contenu de deux compartiments. Normalement, s3 sync copie les fichiers ou objets manquants ou obsolètes entre la source et la cible. Cependant, vous pouvez également indiquer l’option --delete pour supprimer des fichiers ou des objets de la cible qui ne sont pas présents dans la source.

Syntaxe

$ aws s3 sync <source> <target> [--options]

Pour voir quelques options courantes à utiliser avec cette commande, ainsi que des exemples, consultez Options fréquemment utilisées pour les commandes s3. Pour obtenir la liste complète des options, consultez s3 sync dans la Référence des commandes de l’AWS CLI.

L’exemple suivant synchronise le contenu d’un préfixe Amazon S3 nommé path dans le compartiment nommé amzn-s3-demo-bucket avec le répertoire de travail actuel.

s3 sync met à jour tous les fichiers dont la taille ou l’heure de modification sont différentes de celles des fichiers portant le même nom dans la destination. La sortie affiche les opérations spécifiques effectuées lors de la synchronisation. Notez que l’opération synchronise de manière récursive le sous-répertoire MySubdirectory et son contenu avec s3://amzn-s3-demo-bucket/path/MySubdirectory.

$ aws s3 sync . s3://amzn-s3-demo-bucket/path upload: MySubdirectory\MyFile3.txt to s3://amzn-s3-demo-bucket/path/MySubdirectory/MyFile3.txt upload: MyFile2.txt to s3://amzn-s3-demo-bucket/path/MyFile2.txt upload: MyFile1.txt to s3://amzn-s3-demo-bucket/path/MyFile1.txt

L’exemple suivant, qui développe l’exemple précédent, montre comment utiliser l’option --delete.

// Delete local file $ rm ./MyFile1.txt // Attempt sync without --delete option - nothing happens $ aws s3 sync . s3://amzn-s3-demo-bucket/path // Sync with deletion - object is deleted from bucket $ aws s3 sync . s3://amzn-s3-demo-bucket/path --delete delete: s3://amzn-s3-demo-bucket/path/MyFile1.txt // Delete object from bucket $ aws s3 rm s3://amzn-s3-demo-bucket/path/MySubdirectory/MyFile3.txt delete: s3://amzn-s3-demo-bucket/path/MySubdirectory/MyFile3.txt // Sync with deletion - local file is deleted $ aws s3 sync s3://amzn-s3-demo-bucket/path . --delete delete: MySubdirectory\MyFile3.txt // Sync with Infrequent Access storage class $ aws s3 sync . s3://amzn-s3-demo-bucket/path --storage-class STANDARD_IA

Lorsque vous utilisez l’option --delete, les options --exclude et --include peuvent filtrer les fichiers ou les objets à supprimer au cours d’une opération s3 sync. Dans ce cas, la chaîne de paramètre doit spécifier les fichiers à exclure de ou à inclure dans la suppression dans le contexte du répertoire cible ou du compartiment. Vous en trouverez un exemple ci-dessous.

Assume local directory and s3://amzn-s3-demo-bucket/path currently in sync and each contains 3 files: MyFile1.txt MyFile2.rtf MyFile88.txt ''' // Sync with delete, excluding files that match a pattern. MyFile88.txt is deleted, while remote MyFile1.txt is not. $ aws s3 sync . s3://amzn-s3-demo-bucket/path --delete --exclude "path/MyFile?.txt" delete: s3://amzn-s3-demo-bucket/path/MyFile88.txt ''' // Sync with delete, excluding MyFile2.rtf - local file is NOT deleted $ aws s3 sync s3://amzn-s3-demo-bucket/path . --delete --exclude "./MyFile2.rtf" download: s3://amzn-s3-demo-bucket/path/MyFile1.txt to MyFile1.txt ''' // Sync with delete, local copy of MyFile2.rtf is deleted $ aws s3 sync s3://amzn-s3-demo-bucket/path . --delete delete: MyFile2.rtf

Options fréquemment utilisées pour les commandes s3

Les options suivantes sont fréquemment utilisées pour les commandes décrites dans cette rubrique. Pour obtenir la liste complète des options que vous pouvez utiliser pour une commande, consultez la commande spécifique dans le Guide de référence de l’AWS CLI.

acl

s3 sync et s3 cp peuvent utiliser l’option --acl. Cela vous permet de définir les autorisations d’accès pour les fichiers copiés sur Amazon S3. L’option --acl accepte les valeurs private, public-read et public-read-write. Pour plus d’informations, consultez Liste ACL prête à l’emploi dans le Guide de l’utilisateur Amazon S3.

$ aws s3 sync . s3://amzn-s3-demo-bucket/path --acl public-read
exclude

Lorsque vous utilisez la commande s3 cp, s3 mv, s3 sync ou s3 rm, vous pouvez filtrer les résultats à l’aide de l’option --exclude ou --include. L’option --exclude définit des règles pour exclure uniquement les objets de la commande, et les options s’appliquent dans l’ordre spécifié. Voici un exemple :

Local directory contains 3 files: MyFile1.txt MyFile2.rtf MyFile88.txt // Exclude all .txt files, resulting in only MyFile2.rtf being copied $ aws s3 cp . s3://amzn-s3-demo-bucket/path --exclude "*.txt" // Exclude all .txt files but include all files with the "MyFile*.txt" format, resulting in, MyFile1.txt, MyFile2.rtf, MyFile88.txt being copied $ aws s3 cp . s3://amzn-s3-demo-bucket/path --exclude "*.txt" --include "MyFile*.txt" // Exclude all .txt files, but include all files with the "MyFile*.txt" format, but exclude all files with the "MyFile?.txt" format resulting in, MyFile2.rtf and MyFile88.txt being copied $ aws s3 cp . s3://amzn-s3-demo-bucket/path --exclude "*.txt" --include "MyFile*.txt" --exclude "MyFile?.txt"
include

Lorsque vous utilisez la commande s3 cp, s3 mv, s3 sync ou s3 rm, vous pouvez filtrer les résultats à l’aide de l’option --exclude ou --include. L’option --include définit des règles pour inclure uniquement les objets spécifiés pour la commande, et les options s’appliquent dans l’ordre spécifié. Voici un exemple :

Local directory contains 3 files: MyFile1.txt MyFile2.rtf MyFile88.txt // Include all .txt files, resulting in MyFile1.txt and MyFile88.txt being copied $ aws s3 cp . s3://amzn-s3-demo-bucket/path --include "*.txt" // Include all .txt files but exclude all files with the "MyFile*.txt" format, resulting in no files being copied $ aws s3 cp . s3://amzn-s3-demo-bucket/path --include "*.txt" --exclude "MyFile*.txt" // Include all .txt files, but exclude all files with the "MyFile*.txt" format, but include all files with the "MyFile?.txt" format resulting in MyFile1.txt being copied $ aws s3 cp . s3://amzn-s3-demo-bucket/path --include "*.txt" --exclude "MyFile*.txt" --include "MyFile?.txt"
grant

Les commandes s3 cp, s3 mv et s3 sync incluent une option --grants qui peut être utilisée pour accorder des autorisations sur l’objet à des utilisateurs ou groupes spécifiés. Définissez l’option --grants sur une liste d’autorisations à l’aide de la syntaxe suivante. Remplacez Permission, Grantee_Type et Grantee_ID par vos propres valeurs.

Syntaxe

--grants Permission=Grantee_Type=Grantee_ID [Permission=Grantee_Type=Grantee_ID ...]

Chaque valeur contient les éléments suivants :

  • Autorisation – Spécifie les autorisations accordées. Cette option peut être définie sur read, readacl, writeacl ou full.

  • Type_bénéficiaire : indique comment identifier le bénéficiaire. Cette option peut être définie sur uri, emailaddress ou id.

  • ID_bénéficiaire : indique le bénéficiaire en fonction de Type_bénéficiaire.

    • uri – URI du groupe. Pour plus d’informations, consultez Qui est un bénéficiaire ?

    • emailaddress – Adresse e-mail du compte.

    • id – ID canonique du compte.

Pour plus d’informations sur le contrôle d’accès Amazon S3, consultez Contrôle d’accès.

L’exemple suivant copie un objet dans un compartiment. Il accorde des autorisations read sur l’objet à tout le monde et des autorisations full (read, readacl et writeacl) au compte associé à user@example.com.

$ aws s3 cp file.txt s3://amzn-s3-demo-bucket/ --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers full=emailaddress=user@example.com

Vous pouvez également spécifier une classe de stockage autre que celle par défaut (REDUCED_REDUNDANCY ou STANDARD_IA) pour les objets que vous chargez dans Amazon S3. Pour ce faire, utilisez l’option --storage-class.

$ aws s3 cp file.txt s3://amzn-s3-demo-bucket/ --storage-class REDUCED_REDUNDANCY
recursive

Lorsque vous utilisez cette option, la commande est exécutée sur tous les fichiers ou objets du répertoire ou du préfixe spécifié. L’exemple suivant supprime s3://amzn-s3-demo-bucket/path et l’ensemble de son contenu.

$ aws s3 rm s3://amzn-s3-demo-bucket/path --recursive

Ressources

Référence de l’AWS CLI :

Référence du service :