Utilisation service stockage objet - s3cmd
Vous devez disposer d’informations de connexion de votre compte de stockage objet Cloud Avenue :
• url d’accès (url HTTPS du point de terminaison du service Web)
• clé d’accès (access key)
• clé secrète (secret key)
Ces informations vous sont communiquées après la création de votre compte de stockage.
Présentation
S3cmd est un logiciel libre (licence GNU GPL) développé par TGRMN Software pour permettre l’utilisation des services AWS à travers des commandes dans un terminal (shell Linux ou Terminal sous OSX).
Similaire à AWS CLI, S3cmd est cependant très limité sur l’aspect IAM (identités et autorisations). Il permet de s’affranchir de la complexité de l’API S3 pour manipuler compartiments et objets.
Il propose notamment une fonctionnalité de synchronisation de répertoire vers/depuis le stockage S3.
Configuration
Prérequis :
· Avoir installé la version actuelle de S3cmd (sous Linux et macOS)
- voir https://s3tools.org/download+et+https://github.com/s3tools/s3cmd/blob/master/INSTALL.md
Procédure minimale de configuration :
- Ouvrir une fenêtre de commande
- Exécuter la commande s3cmd --configure et entrer :
- La clé d’accès pour Access Key
- La clé secrète pour Secret Access Key
- EU pour Default region
- Le hostname pour S3 Endpoint (voir l’url du point de terminaison de service).
- "%(bucket)s.hostname" pour DNS-style bucket+hostname (cf. ligne précédente)
- Valider (ne rien saisir) pour Encryption password
- Valider (ne rien saisir) pour Path to GPG program
- Valider pour Use HTTPS protocol (Yes par défaut)
- Valider (ne rien saisir) pour HTTP Proxy server name
- Valider (ne rien saisir) pour Test access with supplied credentials (Y)
- Après le message “Success. Your access key and secret key worked fine”, entrer : y pour Sauvegarder la configuration (No par défaut)
NB : l’utilisation de la région EU ne signifie pas que vos données sont localisées hors de France; les données Cloud Avenue sont effectivement stockées en France métropolitaine.
Exemples d’utilisation
Dans les exemples suivants, url représente le hostname de votre point de terminaison de service accessible en HTTPS, il vaut faudra le modifier en fonction de votre point de terminaison (voir vos informations de connexion).
Les exemples correspondent à des cas d’usage simples (gestion des compartiments et des objets).
Compartiment (bucket)
Lister les compartiments :
$ s3cmd ls
2020-03-17 14:31 s3://comp1
2020-03-18 14:58 s3://comp2
Dans l’exemple, 2 compartiments existent (comp1 et comp2).
Lister le contenu d’un compartiment :
$ s3cmd ls s3://comp1
DIR s3://comp1/backup/
2020-03-17 14:33 102 s3://comp1/mon_texte.txt
2020-03-17 14:33 0 s3://comp1/rienàvoir
2020-03-17 14:36 24 s3://comp1/texte2.txt
Dans l’exemple, le compartiment comp1 contient 3 fichiers et un dossier (ou préfixe) nommé backup. Le contenu du dossier n’est pas listé ici.
Lister récursivement le contenu d’un compartiment :
$ s3cmd ls s3://comp1 --recursive
2020-03-18 15:04 5401 s3://comp1/backup/archive1.tgz
2020-03-17 14:33 102 s3://comp1/mon_texte.txt
2020-03-17 14:33 0 s3://comp1/rienàvoir
2020-03-17 14:36 24 s3://comp1/texte2.txt
Dans l’exemple, le compartiment comp1 contient 4 fichiers dont 1 est présent dans un dossier nommé backup. L’option --recursive permet de lister l’intégralité des objets y compris en parcourant les dossiers (ou préfixes).
Créer un compartiment :
$ s3cmd mb s3://comp3
Bucket 's3://comp3/' created
$ s3cmd ls
2020-03-17 14:31 s3://comp1
2020-03-18 14:58 s3://comp2
2020-03-18 15:15 s3://comp3
Dans l’exemple, le compartiment comp3 est créé.
Supprimer un compartiment (ne contenant aucun objet) :
$ s3cmd rb s3://comp3
Bucket 's3://comp3/' removed
Supprimer un compartiment contenant au moins un objet :
$ s3cmd rb s3://comp2
ERROR: S3 error: 409 (BucketNotEmpty): The bucket you tried to delete is not empty.
$ s3cmd rb s3://comp2 --recursive
WARNING: Bucket is not empty. Removing all the objects from it first. This may take some time...
delete: 's3://comp2/bigfile.zip'
Bucket 's3://comp2/' removed
Dans l’exemple, le compartiment comp2 n’est pas vide; l’option --recursive est utilisée pour supprimer automatiquement tous les objets et dossiers présents.
Objet (object)
Copier un objet dans un compartiment :
$ s3cmd put ./archive1.tgz s3://comp3
upload: './archive1.tgz' -> 's3://comp3/archive1.tgz' [1 of 1]
5401 of 5401 100% in 0s 22.96 kB/s done
$ s3cmd ls s3://comp3
2020-03-18 15:26 5401 s3://comp3/archive1.tgz
Dans l’exemple, le fichier local est copié (uploadé) dans le compartiment comp3.
Copier un objet dans un dossier :
s3cmd put ./help.txt s3://comp3/documentation/
upload: './help.txt' -> 's3://comp3/documentation/help.txt' [1 of 1]
17946 of 17946 100% in 0s 72.44 kB/s done
$ s3cmd ls s3://comp3 --recursive
2020-03-18 15:26 5401 s3://comp3/archive1.tgz
2020-03-18 15:34 17946 s3://comp3/documentation/help.txt
Dans l’exemple, le dossier documentation est créé s’il n’existe pas déjà dans le compartiment, puis le fichier local est copié (uploadé) dans le dossier.
Renommer un objet :
$ s3cmd mv s3://comp3/documentation/help.txt s3://comp3/documentation/helpv2.txt
move: 's3://comp3/documentation/help.txt' -> 's3://comp3/documentation/helpv2.txt'
Dans l’exemple, le fichier fic2.txt est renommé en fic2bis.txt.
Déplacer un objet :
$ s3cmd mv s3://comp3/documentation/helpv2.txt s3://comp1
move: 's3://comp3/documentation/helpv2.txt' -> 's3://comp1/helpv2.txt'
Déplacer un objet en le renommant :
$ s3cmd mv s3://comp1/helpv2.txt s3://comp3/documentation/importhelpv2.txt
move: 's3://comp1/helpv2.txt' -> 's3://comp3/documentation/importhelpv2.txt'
Effacer un objet :
$ s3cmd del s3://comp3/documentation/importhelpv2.txt
delete: 's3://comp3/documentation/importhelpv2.txt'
$ s3cmd ls s3://comp3 --recursive
2020-03-18 15:26 5401 s3://comp3/archive1.tgz
Dans l’exemple, l’objet est supprimé; le dossier (ou préfixe) documentation est vide; il est supprimé automatiquement.
Effacer un dossier (ou préfixe) :
$ s3cmd del s3://comp1/backup --recursive
delete: 's3://comp1/backup/archive1.tgz'
delete: 's3://comp1/backup/mon_texte.txt'
delele: 's3://comp1/backup/texte2.txt'
$ s3cmd ls s3://comp1 --recursive
2020-03-17 14:33 0 s3://comp1/rienàvoir
Dans l’exemple, l’effacement porte sur le dossier; l’option --recursive provoque l’effacement de tous les objets présents.