Copier manuellement des fichiers dans le stockage AWS peut être fastidieux, sujet aux erreurs et inefficace – surtout lorsqu’il s’agit de grandes quantités de données. Vous ne voulez pas ça.
L’Interface de Ligne de Commande AWS (CLI) fournit un outil pratique appelé aws s3 cp
qui simplifie ce processus. Cette commande vous permet de copier des fichiers vers et depuis les compartiments Amazon S3 avec des commandes simples et scriptables qui fonctionnent sur tous les systèmes d’exploitation. L’utilisation de l’AWS CLI permet non seulement de gagner du temps, mais également d’automatiser les tâches de transfert de fichiers routinières.
La commande aws s3 cp
offre de nombreuses options pour gérer des scénarios complexes de transfert de fichiers. Vous pouvez copier des fichiers individuels, transférer récursivement des répertoires entiers, filtrer les fichiers en fonction de motifs, et même spécifier différentes classes de stockage pour optimiser les coûts.
Dans ce tutoriel, je vous guiderai à travers tout ce que vous devez savoir pour utiliser aws s3 cp
de manière efficace, des commandes de base aux techniques avancées et aux stratégies d’automatisation.
> Nouveau sur AWS et incertain concernant le stockage cloud et S3 ? Notre guide détaillé sur S3 et EFS est l’endroit idéal pour commencer. Si vous êtes spécifiquement intéressé par S3, consultez notre guide approfondi sur S3.
Qu’est-ce que AWS S3 cp?
La commande aws s3 cp
est un utilitaire dans l’interface de ligne de commande AWS qui vous permet de copier des fichiers entre votre système local et le stockage Amazon S3.
Fondamentalement, elle est conçue pour fournir une expérience en ligne de commande familière similaire à la commande Linux standard cp
, mais adaptée pour interagir avec les compartiments S3.
À son cœur, aws s3 cp
connecte votre machine locale à l’infrastructure de stockage cloud d’AWS. Lorsque vous exécutez une commande aws s3 cp
, l’AWS CLI gère l’authentification et la division des fichiers en morceaux pour les transferts volumineux et garantit l’intégrité des données pendant le processus de copie. Cet utilitaire prend en charge la copie de fichiers individuels, de plusieurs fichiers à l’aide de jokers et de structures de répertoires entières à l’aide d’opérations récursives.
La aws s3 cp
est capable de nombreuses choses, je vais simplement en énumérer quelques-unes :
- Transferts bidirectionnels (téléversement vers S3 ou téléchargement depuis S3).
- Copie récursive de structures de répertoires entières.
- Support pour diverses classes de stockage S3 (Standard, Intelligent-Tiering, Glacier, etc.).
- Filtrage de fichiers utilisant des modèles d’inclusion/exclusion.
- Préservation des métadonnées de fichiers lors des transferts.
- Intégration avec AWS Identity and Access Management (IAM) pour la sécurité.
Cependant, la puissance de aws s3 cp
réside dans sa flexibilité et son intégration avec l’écosystème d’AWS. Vous pouvez spécifier différents paramètres pour contrôler des aspects tels que la classe de stockage, le chiffrement, les métadonnées, le contrôle d’accès, et plus encore. Cela le rend adapté à tout, des simples transferts de fichiers ponctuels aux solutions de sauvegarde complexes et automatisées.
La commande est différente de l’utilisation de la Console de gestion AWS, qui nécessite une navigation manuelle et des clics. La commande aws s3 cp
peut être exécutée directement depuis votre terminal ou intégrée dans des scripts et des flux de travail automatisés. Cet accès programmatique à S3 est essentiel pour de nombreux professionnels de la technologie, en particulier les ingénieurs DevOps et les data scientists.
Pour conclure, aws s3 cp
offre une solution fiable et scriptable capable de gérer des transferts massifs tout en maintenant des performances. Il peut reprendre les uploads et downloads interrompus, ce qui le rend particulièrement utile lors de l’utilisation de connexions réseau instables ou lors du transfert de fichiers extrêmement volumineux.
Ensuite, je vais vous guider à travers les étapes ennuyeuses – la configuration de l’AWS CLI sur votre système.
Configuration de l’AWS CLI et d’AWS S3
Avant de plonger dans la commande aws s3 cp
, vous devez avoir l’AWS CLI installé et correctement configuré sur votre système. Ne vous inquiétez pas si vous n’avez jamais travaillé avec AWS auparavant – le processus de configuration est facile et devrait prendre moins de 10 minutes.
Je vais diviser cela en trois phases simples : installer l’outil AWS CLI, configurer vos identifiants et créer votre premier bucket S3 pour le stockage.
Installation de l’AWS CLI
Le processus d’installation diffère légèrement en fonction du système d’exploitation que vous utilisez.
Pour les systèmes Windows :
- Accédez à la page officielle de documentation AWS CLI
- Téléchargez l’installateur Windows 64 bits
- Lancez le fichier téléchargé et suivez l’assistant d’installation
Pour les systèmes Linux :
Exécutez les trois commandes suivantes dans le Terminal :
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install
Pour les systèmes macOS :
En supposant que vous ayez Homebrew installé, exécutez cette ligne depuis le Terminal :
brew install awscli
Si vous n’avez pas Homebrew, utilisez plutôt ces deux commandes :
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg" sudo installer -pkg AWSCLIV2.pkg -target /
Pour confirmer une installation réussie, exécutez aws --version
dans votre terminal. Vous devriez voir quelque chose comme ceci :
Image 1 – Version AWS CLI
Configuration de la CLI AWS
Avec la CLI installée, il est temps de configurer vos informations d’identification AWS pour l’authentification.
Tout d’abord, accédez à votre compte AWS et rendez-vous sur le tableau de bord du service IAM. Créez un nouvel utilisateur avec un accès programmatique et attachez la stratégie de permissions S3 appropriée :
Image 2 – Utilisateur AWS IAM
Ensuite, visitez l’onglet « Informations d’identification de sécurité » et générez une nouvelle paire de clés d’accès. Assurez-vous de sauvegarder à la fois l’identifiant de clé d’accès et la clé d’accès secrète dans un endroit sécurisé – Amazon ne vous montrera plus la clé secrète après cette étape :
Image 3 – Informations d’identification de l’utilisateur IAM AWS
Maintenant, ouvrez votre terminal et exécutez la commande aws configure
. Vous serez invité à fournir quatre informations : votre identifiant de clé d’accès, votre clé d’accès secrète, la région par défaut (je vais utiliser eu-central-1
), et le format de sortie préféré (généralement json
) :
Image 4 – Configuration AWS CLI
Pour vous assurer que tout est correctement connecté, vérifiez votre identité avec la commande suivante :
aws sts get-caller-identity
Si la configuration est correcte, vous verrez les détails de votre compte :
Image 5 – Commande de test de connexion AWS CLI
Création d’un compartiment S3
Enfin, vous devez créer un compartiment S3 pour stocker les fichiers que vous allez copier.
Rendez-vous dans la section du service S3 de votre Console AWS et cliquez sur « Créer un compartiment ». Rappelez-vous que les noms de compartiment doivent être globalement uniques sur l’ensemble d’AWS. Choisissez un nom distinctif, laissez les paramètres par défaut pour le moment, et cliquez sur « Créer » :
Image 6 – Création de compartiment AWS
Une fois créé, votre nouveau compartiment apparaîtra dans la console. Vous pouvez également confirmer son existence via la ligne de commande :
aws s3 ls
Image 7 – Tous les compartiments S3 disponibles
Tous les compartiments S3 sont configurés comme privés par défaut, gardez ceci à l’esprit. Si vous avez l’intention d’utiliser ce compartiment pour des fichiers accessibles au public, vous devrez modifier les politiques du compartiment en conséquence.
Vous êtes maintenant pleinement équipé pour commencer à utiliser la commande aws s3 cp
pour transférer des fichiers. Passons aux bases ensuite.
Syntaxe de base de la commande AWS S3 cp
Maintenant que vous avez tout configuré, plongeons dans l’utilisation de base de la commande aws s3 cp
. Comme d’habitude avec AWS, la beauté réside dans la simplicité, même si la commande peut gérer différents scénarios de transfert de fichiers.
Dans sa forme la plus basique, la commande aws s3 cp
suit cette syntaxe :
aws s3 cp <source> <destination> [options]
Où <source>
et <destination>
peuvent être des chemins de fichiers locaux ou des URI S3 (qui commencent par s3://
). Explorons les trois cas d’utilisation les plus courants.
Copier un fichier de local vers S3
Pour copier un fichier de votre système local vers un bucket S3, la source sera un chemin local et la destination sera une URI S3 :
aws s3 cp /Users/dradecic/Desktop/test_file.txt s3://testbucket-aws-cp-dradecic/test_file.txt
Cette commande télécharge le fichier test_file.txt
depuis le répertoire fourni vers le bucket S3 spécifié. Si l’opération réussit, vous verrez une sortie console comme ceci :
Image 8 – Sortie console après la copie du fichier local
Et, sur la console de gestion AWS, vous verrez votre fichier téléchargé :
Image 9 – Contenu du bucket S3
De même, si vous souhaitez copier un dossier local vers votre bucket S3 et le placer, disons, dans un autre dossier imbriqué, exécutez une commande similaire à celle-ci :
aws s3 cp /Users/dradecic/Desktop/test_folder s3://testbucket-aws-cp-dradecic/my-desired-folder/test_folder/ --recursive
Image 10 – Contenu du bucket S3 après le téléchargement d’un dossier
Le drapeau --recursive
s’assurera que tous les fichiers et sous-dossiers à l’intérieur du dossier sont copiés.
Gardez simplement à l’esprit – S3 n’a en fait pas de dossiers – la structure des chemins fait juste partie de la clé de l’objet, mais cela fonctionne conceptuellement comme des dossiers.
Copier un fichier de S3 vers local
Pour copier un fichier de S3 vers votre système local, il suffit d’inverser l’ordre – la source devient l’URI S3 et la destination est votre chemin local :
aws s3 cp s3://testbucket-aws-cp-dradecic/test_file.txt /Users/dradecic/Documents/s3-data/downloaded_test_file.txt
Cette commande télécharge test_file.txt
depuis votre compartiment S3 et le sauvegarde en tant que downloaded_test_file.txt
dans le répertoire fourni. Vous le verrez immédiatement sur votre système local :
Image 11 – Téléchargement d’un seul fichier depuis S3
Si vous omettez le nom du fichier de destination, la commande utilisera le nom de fichier original :
aws s3 cp s3://testbucket-aws-cp-dradecic/test_file.txt .
Image 12 – Contenu du fichier téléchargé
Le point (.
) représente votre répertoire actuel, donc cela téléchargera test_file.txt
dans votre emplacement actuel.
Enfin, pour télécharger un répertoire entier, vous pouvez utiliser une commande similaire à celle-ci :
aws s3 cp s3://testbucket-aws-cp-dradecic/my-desired-folder/test_folder /Users/dradecic/Documents/test_folder --recursive
Image 13 – Contenu du dossier téléchargé
N’oubliez pas que le drapeau --recursive
est essentiel lors de travailler avec plusieurs fichiers – sans cela, la commande échouera si la source est un répertoire.
Avec ces commandes de base, vous pouvez déjà accomplir la plupart des tâches de transfert de fichiers dont vous aurez besoin. Mais dans la section suivante, vous découvrirez des options avancées qui vous donneront un meilleur contrôle sur le processus de copie.
Options et fonctionnalités avancées de copie AWS S3
AWS propose quelques options avancées qui vous permettent de maximiser les opérations de copie de fichiers. Dans cette section, je vous montrerai quelques-uns des drapeaux et paramètres les plus utiles qui vous aideront dans vos tâches quotidiennes.
Utilisation des drapeaux –exclude et –include
Parfois, vous ne souhaitez copier que certains fichiers qui correspondent à des modèles spécifiques. Les options --exclude
et --include
vous permettent de filtrer les fichiers en fonction de modèles, et elles vous offrent un contrôle précis sur ce qui est copié.
Pour poser le décor, voici la structure de répertoire avec laquelle je travaille :
Image 14 – Structure de répertoire
Maintenant, disons que vous souhaitez copier tous les fichiers du répertoire sauf les fichiers .log
:
aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --exclude "*.log"
Cette commande copiera tous les fichiers du répertoire advanced_folder
vers S3, en excluant tout fichier avec l’extension .log
:
Image 15 – Résultats de la copie du dossier
Vous pouvez également combiner plusieurs modèles. Disons que vous souhaitez copier uniquement les fichiers HTML et CSS du dossier projet :
aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --exclude "*" --include "*.html" --include "*.css"
Cette commande exclut d’abord tout (--exclude "*"
), puis inclut uniquement les fichiers avec les extensions .html
et .css
. Le résultat ressemble à ceci :
Image 16 – Résultats de la copie du dossier (2)
Gardez à l’esprit que l’ordre des options est important – AWS CLI traite ces options de manière séquentielle, donc si vous mettez --include
avant --exclude
, vous obtiendrez des résultats différents :
aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --include "*.html" --include "*.css" --exclude "*"
Cette fois, rien n’a été copié dans le bucket :
Image 17 – Résultats de la copie du dossier (3)
Spécification de la classe de stockage S3
Amazon S3 propose différentes classes de stockage, chacune avec des coûts et des caractéristiques de récupération différents. Par défaut, aws s3 cp
télécharge des fichiers dans la classe de stockage Standard, mais vous pouvez spécifier une classe différente en utilisant le drapeau --storage-class
:
aws s3 cp /Users/dradecic/Desktop/large-archive.zip s3://testbucket-aws-cp-dradecic/archives/ --storage-class GLACIER
Cette commande télécharge large-archive.zip
dans la classe de stockage Glacier, qui est considérablement moins chère mais a des coûts de récupération plus élevés et des temps de récupération plus longs:
Image 18 – Copie de fichiers vers S3 avec différentes classes de stockage
Les classes de stockage disponibles comprennent:
STANDARD
(par défaut): Stockage polyvalent avec une haute durabilité et disponibilité.REDUCED_REDUNDANCY
(non recommandé): Durabilité inférieure, option d’économie de coûts, maintenant obsolète.STANDARD_IA
(Accès peu fréquent): Stockage à moindre coût pour les données moins fréquemment consultées.ONEZONE_IA
(Accès peu fréquent dans une seule zone): Stockage à moindre coût pour un accès peu fréquent dans une seule zone de disponibilité AWS.INTELLIGENT_TIERING
: Déplace automatiquement les données entre les niveaux de stockage en fonction des habitudes d’accès.GLACIER
: Stockage d’archivage à bas coût pour la rétention à long terme, récupération en quelques minutes à quelques heures.DEEP_ARCHIVE
: Stockage d’archivage le moins cher, récupération en quelques heures, idéal pour les sauvegardes à long terme.
Si vous sauvegardez des fichiers auxquels vous n’avez pas besoin d’un accès immédiat, l’utilisation de GLACIER
ou DEEP_ARCHIVE
peut vous faire économiser des coûts de stockage importants.
Synchronisation de fichiers avec le drapeau –exact-timestamps
Lorsque vous mettez à jour des fichiers dans S3 qui existent déjà, vous pourriez vouloir copier uniquement les fichiers qui ont changé. Le drapeau --exact-timestamps
facilite cela en comparant les horodatages entre la source et la destination.
Voici un exemple :
aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --exact-timestamps
Avec ce drapeau, la commande copiera uniquement les fichiers si leurs horodatages diffèrent des fichiers déjà présents dans S3. Cela peut réduire le temps de transfert et l’utilisation de la bande passante lorsque vous mettez régulièrement à jour un grand ensemble de fichiers.
Alors, pourquoi est-ce utile ? Imaginez simplement des scénarios de déploiement où vous souhaitez mettre à jour vos fichiers d’application sans transférer inutilement des actifs inchangés.
Alors que --exact-timestamps
est utile pour effectuer une sorte de synchronisation, si vous avez besoin d’une solution plus sophistiquée, envisagez d’utiliser aws s3 sync
au lieu de aws s3 cp
. La commande sync
a été spécifiquement conçue pour maintenir la synchronisation des répertoires et dispose de capacités supplémentaires à cet effet. J’ai écrit un tutoriel complet sur la commande sync dans le tutoriel AWS S3 Sync.
Avec ces options avancées, vous avez désormais un contrôle beaucoup plus précis sur vos opérations de fichiers S3. Vous pouvez cibler des fichiers spécifiques, optimiser les coûts de stockage et mettre à jour efficacement vos fichiers. Dans la section suivante, vous apprendrez à automatiser ces opérations à l’aide de scripts et de tâches planifiées.
Automatisation des transferts de fichiers avec AWS S3 cp
Jusqu’à présent, vous avez appris comment copier manuellement des fichiers vers et depuis S3 en utilisant la ligne de commande. L’un des plus grands avantages de l’utilisation de aws s3 cp
est que vous pouvez facilement automatiser ces transferts, ce qui vous fera gagner énormément de temps.
Explorons comment intégrer la commande aws s3 cp
dans des scripts et des tâches planifiées pour des transferts de fichiers sans intervention manuelle.
Utilisation de AWS S3 cp dans des scripts
Voici un exemple de script bash simple qui sauvegarde un répertoire vers S3, ajoute une horodatage à la sauvegarde, et met en place la gestion des erreurs et l’enregistrement dans un fichier:
#!/bin/bash # Définir les variables SOURCE_DIR="/Users/dradecic/Desktop/advanced_folder" BUCKET="s3://testbucket-aws-cp-dradecic/backups" DATE=$(date +%Y-%m-%d-%H-%M) BACKUP_NAME="backup-$DATE" LOG_FILE="/Users/dradecic/logs/s3-backup-$DATE.log" # Assurer l'existence du répertoire de logs mkdir -p "$(dirname "$LOG_FILE")" # Créer la sauvegarde et enregistrer la sortie echo "Starting backup of $SOURCE_DIR to $BUCKET/$BACKUP_NAME" | tee -a $LOG_FILE aws s3 cp $SOURCE_DIR $BUCKET/$BACKUP_NAME --recursive 2>&1 | tee -a $LOG_FILE # Vérifier si la sauvegarde a été réussie if [ $? -eq 0 ]; then echo "Backup completed successfully on $DATE" | tee -a $LOG_FILE else echo "Backup failed on $DATE" | tee -a $LOG_FILE fi
Enregistrez ceci sous backup.sh
, rendez-le exécutable avec chmod +x backup.sh
, et vous avez un script de sauvegarde réutilisable!
Vous pouvez ensuite l’exécuter avec la commande suivante:
./backup.sh
Image 19 – Script s’exécutant dans le terminal
Immédiatement après, le dossier backups
sur le bucket sera peuplé:
Image 20 – Sauvegarde stockée sur le bucket S3
Allons plus loin en planifiant l’exécution du script.
Planification des transferts de fichiers avec des tâches cron
Maintenant que vous avez un script, la prochaine étape consiste à le planifier pour qu’il s’exécute automatiquement à des moments spécifiques.
Si vous êtes sur Linux ou macOS, vous pouvez utiliser cron
pour programmer vos sauvegardes. Voici comment configurer un job cron pour exécuter votre script de sauvegarde tous les jours à minuit :
1. Ouvrez votre crontab pour l’édition :
crontab -e
2. Ajoutez la ligne suivante pour exécuter votre script quotidiennement à minuit :
0 0 * * * /path/to/your/backup.sh
Image 21 – Tâche cron pour exécuter le script quotidiennement
Le format des tâches cron est minute heure jour-du-mois mois jour-de-la-semaine commande
. Voici quelques exemples supplémentaires :
- Exécuter chaque heure :
0 * * * * /path/to/your/backup.sh
- Exécuter chaque lundi à 9h :
0 9 * * 1 /path/to/your/backup.sh
- Exécuter le 1er de chaque mois :
0 0 1 * * /path/to/your/backup.sh
Et c’est tout ! Le script backup.sh
s’exécutera désormais à l’intervalle programmé.
Automatiser vos transferts de fichiers S3 est une bonne idée. C’est particulièrement utile pour des scénarios comme :
- Des sauvegardes quotidiennes des données importantes
- Synchronisation des images de produits vers un site web
- Déplacement des fichiers journaux vers un stockage à long terme
- Déploiement des fichiers du site web mis à jour
Les techniques d’automatisation comme celles-ci vous aideront à mettre en place un système fiable qui gère les transferts de fichiers sans intervention manuelle. Vous n’avez qu’à l’écrire une fois, et ensuite vous pouvez l’oublier.
Dans la prochaine section, je vais aborder quelques bonnes pratiques pour rendre vos opérations aws s3 cp
plus sécurisées et efficaces.
Meilleures pratiques pour l’utilisation de AWS S3 cp
Alors que la commande aws s3 cp
est facile à utiliser, les choses peuvent mal tourner.
En suivant les meilleures pratiques, vous éviterez les pièges courants, optimiserez les performances et sécuriserez vos données. Explorons ces pratiques pour rendre vos opérations de transfert de fichiers plus efficaces.
Gestion efficace des fichiers
Lorsque vous travaillez avec S3, organiser vos fichiers de manière logique vous fera gagner du temps et évitera les maux de tête à l’avenir.
Tout d’abord, établissez une convention de nommage cohérente pour les seaux et les préfixes. Par exemple, vous pouvez séparer vos données par environnement, application ou date :
s3://company-backups/production/database/2023-03-13/ s3://company-backups/staging/uploads/2023-03/
Ce type d’organisation facilite :
- Trouver des fichiers spécifiques lorsque vous en avez besoin.
- Appliquer des politiques de compartiment et des autorisations au bon niveau.
- Configurer des règles de cycle de vie pour archiver ou supprimer les anciennes données.
Un autre conseil : Lors du transfert de grands ensembles de fichiers, envisagez de regrouper d’abord de petits fichiers ensemble (en les compressant avec zip ou tar) avant de les téléverser. Cela réduit le nombre d’appels API vers S3, ce qui peut réduire les coûts et accélérer les transferts.
# Au lieu de copier des milliers de petits fichiers journaux # archivez-les d'abord, puis téléchargez tar -czf example-logs-2025-03.tar.gz /var/log/application/ aws s3 cp example-logs-2025-03.tar.gz s3://testbucket-aws-cp-dradecic/logs/2025/03/
Gestion des transferts de données volumineux
Lorsque vous copiez de gros fichiers ou de nombreux fichiers en même temps, il existe quelques techniques pour rendre le processus plus fiable et efficace.
Vous pouvez utiliser l’option --quiet
pour réduire la sortie lors de l’exécution dans des scripts :
aws s3 cp large-directory/ s3://testbucket-aws-cp-dradecic/backups/ --recursive --quiet
Cela supprime les informations de progression pour chaque fichier, ce qui rend les journaux plus gérables. Cela améliore également légèrement les performances.
Pour les fichiers très volumineux, envisagez d’utiliser des téléversements multiparties avec l’indicateur --multipart-threshold
:
aws s3 cp huge-file.iso s3://testbucket-aws-cp-dradecic/backups/ --multipart-threshold 100MB
Le paramètre ci-dessus indique à l’AWS CLI de diviser les fichiers de plus de 100 Mo en plusieurs parties pour le téléversement. Cela présente quelques avantages:
- Si la connexion est interrompue, seule la partie concernée doit être réessayée.
- Les pièces peuvent être téléchargées en parallèle, ce qui peut potentiellement augmenter le débit.
- Vous pouvez mettre en pause et reprendre de gros téléversements.
Lorsque vous transférez des données entre des régions, envisagez d’utiliser l’Accélération de transfert S3 pour des téléversements plus rapides :
aws s3 cp large-file.zip s3://testbucket-aws-cp-dradecic/backups/ --endpoint-url https://s3-accelerate.amazonaws.com
Cela achemine votre transfert à travers le réseau de bord d’Amazon, ce qui peut considérablement accélérer les transferts entre régions.
Assurer la sécurité
La sécurité doit toujours être une priorité absolue lors de la manipulation de vos données dans le cloud.
Tout d’abord, assurez-vous que vos autorisations IAM suivent le principe du moindre privilège.N’accordez que les autorisations spécifiques nécessaires pour chaque tâche.
Voici un exemple de politique que vous pouvez attribuer à l’utilisateur:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject" ], "Resource": "arn:aws:s3:::testbucket-aws-cp-dradecic/backups/*" } ] }
Cette politique permet de copier des fichiers uniquement dans le préfixe « backups » de « mon-bucket ».
Un moyen supplémentaire d’augmenter la sécurité est de activer le chiffrement des données sensibles. Vous pouvez spécifier le chiffrement côté serveur lors du téléversement:
aws s3 cp confidential.docx s3://testbucket-aws-cp-dradecic/ --sse AES256
Ou, pour plus de sécurité, utilisez le service de gestion des clés AWS (KMS):
aws s3 cp secret-data.json s3://testbucket-aws-cp-dradecic/ --sse aws:kms --sse-kms-key-id myKMSKeyId
Cependant, pour les opérations hautement sensibles, envisagez d’utiliser les points de terminaison VPC pour S3. Cela garde votre trafic à l’intérieur du réseau AWS et évite complètement l’internet public.
Dans la section suivante, vous apprendrez à résoudre les problèmes courants que vous pourriez rencontrer en travaillant avec cette commande.
Dépannage des erreurs AWS S3 cp
Une chose est certaine – vous rencontrerez parfois des problèmes en travaillant avec aws s3 cp
. Mais, en comprenant les erreurs courantes et leurs solutions, vous gagnerez du temps et éviterez la frustration lorsque les choses ne se passent pas comme prévu.
Dans cette section, je vais vous montrer les problèmes les plus fréquents et comment les résoudre.
Erreurs courantes et solutions
Erreur : « Accès refusé »
C’est probablement l’erreur la plus courante que vous rencontrerez :
upload failed: ./myfile.txt to s3://testbucket-aws-cp-dradecic/myfile.txt An error occurred (AccessDenied) when calling the PutObject operation: Access Denied
Cela signifie généralement l’une des trois choses suivantes :
- Votre utilisateur IAM n’a pas les autorisations suffisantes pour effectuer l’opération.
- La stratégie du compartiment restreint l’accès.
- Vos informations d’identification AWS ont expiré.
Pour résoudre le problème:
- Vérifiez vos autorisations IAM pour vous assurer que vous disposez des autorisations
s3:PutObject
(pour les téléversements) ous3:GetObject
(pour les téléchargements) nécessaires. - Vérifiez que la stratégie du compartiment ne restreint pas vos actions.
- Exécutez
aws configure
pour mettre à jour vos identifiants s’ils ont expiré.
Erreur : « Aucun fichier ou répertoire de ce type »
Cette erreur se produit lorsque le fichier ou le répertoire local que vous essayez de copier n’existe pas :
upload failed: ./missing-file.txt to s3://testbucket-aws-cp-dradecic/missing-file.txt An error occurred (404) when calling the PutObject operation: Not Found
La solution est simple – vérifiez soigneusement vos chemins de fichiers. Les chemins sont sensibles à la casse, gardez cela à l’esprit. De plus, assurez-vous d’être dans le bon répertoire lorsque vous utilisez des chemins relatifs.
Erreur : « Le bucket spécifié n’existe pas »
Si vous voyez cette erreur :
upload failed: ./myfile.txt to s3://testbucket-aws-cp-dradecic/myfile.txt An error occurred (NoSuchBucket) when calling the PutObject operation: The specified bucket does not exist
Vérifiez :
- Les fautes de frappe dans le nom de votre bucket.
- Que vous utilisiez la région AWS correcte.
- Si le bucket existe réellement (il pourrait avoir été supprimé).
Vous pouvez lister tous vos buckets avec aws s3 ls
pour confirmer le nom correct.
Erreur : « Connexion expirée »
Les problèmes de réseau peuvent entraîner des déconnexions :
upload failed: ./largefile.zip to s3://testbucket-aws-cp-dradecic/largefile.zip An error occurred (RequestTimeout) when calling the PutObject operation: Request timeout
Pour résoudre ceci :
- Vérifiez votre connexion internet.
- Essayez d’utiliser des fichiers plus petits ou d’activer les téléchargements multipart pour les gros fichiers.
- Envisagez d’utiliser AWS Transfer Acceleration pour de meilleures performances.
Gestion des échecs de téléchargement
Les erreurs sont beaucoup plus susceptibles de se produire lors du transfert de gros fichiers. Dans ce cas, essayez de gérer les échecs avec élégance.
Par exemple, vous pouvez utiliser le drapeau --only-show-errors
pour faciliter le diagnostic des erreurs dans les scripts :
aws s3 cp large-directory/ s3://testbucket-aws-cp-dradecic/ --recursive --only-show-errors
Cela supprime les messages de transfert réussis, n’affichant que les erreurs, ce qui facilite beaucoup le dépannage des gros transferts.
Pour gérer les transferts interrompus, la commande --recursive
sautera automatiquement les fichiers qui existent déjà dans la destination avec la même taille. Cependant, pour être plus minutieux, vous pouvez utiliser les tentatives intégrées de l’AWS CLI pour les problèmes de réseau en définissant ces variables d’environnement:
export AWS_RETRY_MODE=standard export AWS_MAX_ATTEMPTS=5 aws s3 cp large-file.zip s3://testbucket-aws-cp-dradecic/
Cela indique à l’AWS CLI de réessayer automatiquement les opérations échouées jusqu’à 5 fois.
Mais pour des ensembles de données très volumineux, envisagez d’utiliser aws s3 sync
au lieu de cp
, car il est conçu pour mieux gérer les interruptions:
aws s3 sync large-directory/ s3://testbucket-aws-cp-dradecic/large-directory/
La commande sync
ne transférera que les fichiers différents de ce qui se trouve déjà dans la destination, ce qui la rend parfaite pour reprendre les transferts interrompus de gros fichiers.
Si vous comprenez ces erreurs courantes et mettez en place une gestion appropriée des erreurs dans vos scripts, vous rendrez vos opérations de copie S3 beaucoup plus robustes et fiables.
Résumant AWS S3 cp
En conclusion, la commande aws s3 cp
est un guichet unique pour copier des fichiers locaux vers S3 et vice-versa.
Vous avez tout appris à ce sujet dans cet article. Vous avez commencé par les fondamentaux et la configuration de l’environnement, pour finir par écrire des scripts planifiés et automatisés pour la copie de fichiers. Vous avez également appris comment surmonter certaines erreurs et défis courants lors du déplacement de fichiers, en particulier de gros fichiers.
Donc, si vous êtes développeur, professionnel des données ou administrateur système, je pense que vous trouverez cette commande utile. La meilleure façon de vous familiariser avec est de l’utiliser régulièrement. Assurez-vous de comprendre les fondamentaux, puis passez du temps à automatiser les tâches ennuyeuses de votre travail.
Pour en savoir plus sur AWS, suivez ces cours de DataCamp :
Vous pouvez même utiliser DataCamp pour vous préparer aux examens de certification AWS – Praticien Cloud AWS (CLF-C02).