Utilisation service stockage objet - AWS CLI

From Cloud Avenue
Jump to navigation Jump to search
Notepad.png
À noter !

Vous devez disposer d’informations de connexion de votre compte de stockage objet :

- 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 à la création de votre compte de stockage.


Présentation

AWS CLI (Command Line Interface) est un logiciel libre (licence Apache 2.0) développé par Amazon Web Services pour permettre l’utilisation des services AWS à travers des commandes dans un terminal (shell Linux ou invite de commandes sous Windows ou Terminal sous OSX). Ce logiciel permet de gérer le stockage, ainsi que les identités et autorisations associées.

Des commandes de haut niveau (plus simples) permettent de s’affranchir de la complexité de l’API S3 pour manipuler compartiments et objets.

Configuration

Prérequis : Avoir installé la version actuelle d’AWS CLI (sous Linux, Windows et macOS), se référer à la documentation AWS https://docs.aws.amazon.com/fr_fr/cli/latest/userguide/

https://docs.aws.amazon.com/fr_fr/cli/latest/userguide/getting-started-install.html#getting-started-install-instructions

Procédure minimale de configuration :

  • Ouvrir une fenêtre de commande
  • Exécuter la commande aws configure et entrer :
    • la clé d’accès pour AWS Access Key ID
    • la clé secrète pour AWS Secret Access Key
    • EU pour Default region name
    • valider simplement pour Default output format

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 (voir vos informations de connexion).

Les exemples utilisent des commandes dites « de haut niveau » qui masquent la complexité de l’interface S3 et correspondent à des cas d’usage simples (gestion des compartiments et des objets).

Commande d'utilisation d'un compartiment (bucket)

Lister les compartiments :

$ aws --endpoint https://url s3 ls
2020-03-09 17:19:12 comp1
2020-03-09 17:19:15 comp2

Dans l’exemple, 2 compartiments existent (comp1 et comp2).

Lister le contenu d’un compartiment :

$ aws --endpoint https://url s3 ls s3://comp1
                          PRE backup/
2020-03-09 17:23:34      34394 fic2.txt
2020-03-09 17:23:34        110 fichier1.txt
2020-03-09 17:23:34      34235 fichierB2.txt

Dans l’exemple, le compartiment comp1 contient 3 fichiers (fic2.txt, fichier1.txt et fichierB2.txt) un dossier (ou préfixe) nommé backup. Le contenu du dossier n’est pas listé ici.

Lister récursivement le contenu d’un compartiment :

$ aws --endpoint https://url s3 ls s3://comp1 --recursive
2020-03-10 11:28:57      13548 backup/archive1.tgz
2020-03-10 11:28:12      34394 fic2.txt
2020-03-10 11:28:12        110 fichier1.txt
2020-03-10 11:28:13      34235 fichierB2.txt
$ aws --endpoint https://url s3 ls s3://comp1 --recursive --human-readable
2020-03-10 11:28:57   13.2 KiB backup/archive1.tgz
2020-03-10 11:28:12   33.6 KiB fic2.txt
2020-03-10 11:28:12  110 Bytes fichier1.txt
2020-03-10 11:28:13   33.4 KiB fichierB2.txt
$ aws --endpoint https://url s3 ls s3://comp1 --recursive --human-readable --summarize
2020-03-10 11:28:57   13.2 KiB backup/archive1.tgz
2020-03-10 11:28:12   33.6 KiB fic2.txt
2020-03-10 11:28:12  110 Bytes fichier1.txt
2020-03-10 11:28:13   33.4 KiB fichierB2.txt
Total Objects: 5
 Total Size: 93.6 KiB

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).

Les 2 autres options sont facultatives mais permettent une meilleure lisibilité (indication de l’unité de mesure de taille des objets et nombre d’objets et taille totale).

Créer un compartiment :

$ aws --endpoint https://url s3 mb s3://comp3
make_bucket: comp3
$ aws --endpoint https://url s3 ls
2020-03-09 17:19:12 comp1
2020-03-09 17:19:15 comp2
2020-03-10 11:07:25 comp3

Dans l’exemple, le compartiment comp3 est créé.

Supprimer un compartiment (ne contenant aucun objet) :

$ aws --endpoint https://url s3 rb s3://comp3
remove_bucket: comp3
$ aws --endpoint https://url s3 ls
2020-03-09 17:19:12 comp1
2020-03-09 17:19:15 comp2

Dans l’exemple, le compartiment vide comp3 est supprimé.

Supprimer un compartiment contenant au moins un objet :

$ aws --endpoint https://url s3 rb s3://comp1
remove_bucket failed: s3://comp1 An error occurred (BucketNotEmpty) when calling the DeleteBucket operation
The bucket you tried to delete is not empty.
$ aws --endpoint https://url s3 rb s3://comp1 --force
delete: s3://comp1/backup/archive1.tgz
delete: s3://comp1/fichierB2.txt
delete: s3://comp1/fichier1.txt
delete: s3://comp1/fic2.txt
remove_bucket: comp1

Dans l’exemple, le compartiment comp1 n’est pas vide; l’option --force est utilisée pour supprimer automatiquement tous les objets et dossiers présents.

Note : l’option --force ne fonctionne pas si la gestion des versions est activée dans le compartiment.

Commande d'utilisation d'un Objet (object)

Copier un objet dans un compartiment :

$ aws --endpoint https://url s3 cp ./fic2.txt s3://comp2
upload: ./fic2.txt to s3://comp2/fic2.txt
$ aws --endpoint https://url s3 ls s3://comp2
2020-03-10 12:15:17      34394 fic2.txt

Dans l’exemple, le fichier local est copié (uploadé) dans le compartiment comp2.

Copier un objet dans un dossier :

$ aws --endpoint https://url s3 cp ./fichierB2.txt s3://comp2/divers/
upload: ./fichierB2.txt to s3://comp2/divers/fichierB2.txt
$ aws --endpoint https://url s3 ls s3://comp2 --recursive
2020-03-10 12:23:05      34235 divers/fichierB2.txt
2020-03-10 12:15:17      34394 fic2.txt

Dans l’exemple, le dossier divers est créé s’il n’existe pas déjà dans le compartiment, puis le fichier local est copié (uploadé) dans le dossier (ou préfixe).

Renommer un objet :

$ aws --endpoint https://url s3 mv s3://comp2/fic2.txt s3://comp2/fic2bis.txt
move: s3://comp2/fic2.txt to s3://comp2/fic2bis.txt
$ aws --endpoint https://url s3 ls s3://comp2 --recursive
2020-03-10 12:23:05      34235 divers/fichierB2.txt
2020-03-10 12:28:24      34394 fic2bis.txt

Dans l’exemple, le fichier fic2.txt est renommé en fic2bis.txt.

Déplacer un objet :

$ aws --endpoint https://url s3 mv s3://comp2/fic2bis.txt s3://comp2/old/
move: s3://comp2/fic2bis.txt to s3://comp2/old/fic2bis.txt
$ aws --endpoint https://url s3 ls s3://comp2 --recursive
2020-03-10 12:23:05      34235 divers/fichierB2.txt
2020-03-10 13:34:41      34394 old/fic2bis.txt

Dans l’exemple, le dossier (ou préfixe) old est créé, puis le fichier fic2bis.txt y est déplacé.

Déplacer un objet en le renommant :

$ aws --endpoint https://url s3 mv s3://comp2/divers/fichierB2.txt  s3://comp2/old/fichierB2.bak --recursive
$ aws --endpoint https://url s3 ls s3://comp2 --recursive
2020-03-10 12:23:05      34235 divers/fichierB2.txt
2020-03-10 13:34:41      34394 old/fic2bis.txt

Dans l’exemple, l’objet fichierB2.txt placé dans le dossier divers est renommé et déplacé dans le dossier (ou préfixe) old en tant que fichierB2.bak

Effacer un objet :

$ aws --endpoint https://url s3 rm s3://comp2/divers/fichierB2.txt
delete: s3://comp2/divers/fichierB2.txt
$ aws --endpoint https://url s3 ls s3://comp2 --recursive
2020-03-10 13:34:41      34394 old/fic2bis.txt

Dans l’exemple, l’objet fichierB2.txt est supprimé; le dossier (ou préfixe) divers est vide; il est supprimé automatiquement.

Effacer un dossier (ou préfixe) :

$ aws --endpoint https://url s3 rm s3://comp2/old --recursive
delete: s3://comp2/old/fichierB2.txt
delete: s3://comp2/old/fichier1.txt
delete: s3://comp2/old/fic2bis.txt
delete: s3://comp2/old/archive1.tgz
delete: s3://comp2/old/fic2.txt
$ aws --endpoint https://url s3 ls s3://comp2 –recursive

Dans l’exemple, l’effacement porte sur le dossier old; l’option --recursive provoque l’effacement de tous les objets présents (ici le compartiment est vide).