Premiers pas avec amazon-s3

Installation d’AWS CLI pour accéder à S3

Installation d’aws cli dans l’instance Ubuntu / Debian

sudo apt-get install -y python-dev python-pip
sudo pip install awscli
aws --version
aws configure

Installation d’aws cli en utilisant python

En utilisant pip, vous pouvez installer aws cli sous Windows, OS X et Linux

sudo pip install awscli

Configuration de l’interface de ligne de commande AWS

Cette section explique comment configurer les paramètres que l’interface de ligne de commande AWS utilise lors de l’interaction avec AWS, tels que vos informations d’identification de sécurité et la région par défaut.

$ aws configure
AWS Access Key ID [None]: <Your access key >
AWS Secret Access Key [None]: <Your secret key>
Default region name [None]: us-west-2
Default output format [None]: json

Obtenez la clé d’accès et la clé secrète à partir de la page du compte dans AWS

Création de compartiments

Utilisez la commande aws s3 mb pour créer un nouveau compartiment. Les noms de compartiment doivent être uniques et conformes au DNS. Les noms de compartiment peuvent contenir des lettres minuscules, des chiffres, des traits d’union et des points

aws s3 mb s3://bucket-name

Retirer les compartiments

Pour supprimer un compartiment, utilisez la commande aws s3 rb. Par défaut, le compartiment doit être vide.

aws s3 rb s3://bucket-name

Pour supprimer un compartiment non vide, vous devez inclure l’option –force.

aws s3 rb s3://bucket-name --force

Compartiments de liste

Pour répertorier tous les compartiments ou leur contenu, utilisez la commande aws s3 ls

aws s3 ls
aws s3 ls s3://bucket-name

La commande suivante répertorie les objets dans bucket-name/path

aws s3 ls s3://bucket-name/path

Synchroniser les fichiers entre le système de fichiers local et S3

aws s3 sync . s3://my-bucket/path 

Il téléchargera tous les fichiers du répertoire actuel vers S3. Pour télécharger les fichiers de S3 dans le répertoire actuel, exécutez

aws s3 sync s3://my-bucket/path .

Hello World Exemple utilisant Java

Cet exemple tente de créer un compartiment appelé « hello-world » et, comme le compartiment hello-world a déjà été créé par quelqu’un d’autre dans l’espace de noms global de S3, lève l’exception suivante. Remplacez “hello-world” par autre chose pour éviter l’exception en créant un compartiment nommé de manière unique. [Le nouveau compartiment ainsi créé peut être supprimé à l’aide de la console AWS][1]

Exception dans le thread “main” com.amazonaws.services.s3.model.AmazonS3Exception : le nom de compartiment demandé n’est pas disponible. L’espace de noms de compartiment est partagé par tous les utilisateurs du système. Veuillez sélectionner un autre nom et réessayer. (Service : Amazon S3 ; code d’état : 409 ; code d’erreur : BucketAlreadyExists ; ID de demande : …

           import com.amazonaws.services.s3.AmazonS3;
           import com.amazonaws.services.s3.AmazonS3ClientBuilder;
           import com.amazonaws.services.s3.model.CreateBucketRequest;
           import com.amazonaws.services.s3.model.Bucket;

            /** S3 "hello world" example. */
            public class S3Hello {

                    /** Name of hello-world bucket -- must be globally unique.  The
                     *  bucket namespace is shared by all users of the system.
                     */
                    static final String BUCKET_NAME = "hello-world";

                    /** Creates bucket
                     *  @param args Command line arguments
                     */
                    public static void main(final String[] args) {

                            AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient();

                            CreateBucketRequest request
                                 = new CreateBucketRequest(BUCKET_NAME);

                            Bucket bucket = s3.createBucket(request);
                            System.out.println("S3 Hello World completed.");
                    }
            }

Cet exemple nécessite les dépendances suivantes :

  • Java installé avec la console en fonctionnement.
  • AWS Java SDK installé. https://aws.amazon.com/sdk-for-java/
  • Le fichier d’informations d’identification “credentials” est configuré dans .aws sous votre répertoire personnel. https://aws.amazon.com/developers/getting-started/java/
  • Informations d’identification pour avoir des droits d’administrateur ou de “création de compartiment” dans S3. http://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-buckets

[1] : http://docs.aws.amazon.com/AmazonS3/latest/dev/delete-or-empty-bucket.html

Bonjour tout le monde à l’aide de PowerShell

Cet exemple attend une erreur, car le compartiment hello-world existe déjà et S3 utilise un espace de noms global.

    New-S3Bucket -BucketName "hello-world"

New-S3Bucket : le nom de compartiment demandé n’est pas disponible. L’espace de noms de compartiment est partagé par tous les utilisateurs du système. Veuillez sélectionner un autre nom et réessayer.

Si vous remplacez hello-world par quelque chose d’autre qui est unique, le bucket sera créé sans erreur et vous obtiendrez le résultat suivant :

Date de créationNom du compartiment


30/03/2017 23:43:03 hello-world-832jklsdJF

Cet exemple nécessite les dépendances suivantes :

*PowerShell. Voir http://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html

  • Identifiants. Ceux-ci peuvent être créés à l’aide de la console AWS. Il existe plusieurs options pour les gérer à l’aide de PowerShell. Vous trouverez ci-dessous un exemple simple de configuration. Voir http://docs.aws.amazon.com/powershell/latest/userguide/specifying-your-aws-credentials.html

      PS C:\> Set-AWSCredentials -AccessKey AKIAIOSFODNN7LAJD8A 
             -SecretKey  "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEjw9JFKS3" -StoreAs default
    

Liste des commandes AWS CLI S3

Liste des commandes S3 AWS CLI couramment utilisées

Créer un compartiment

aws s3 mb s3://bucket-name

Retirer le seau

aws s3 rb s3://bucket-name

Répertorier les compartiments

aws s3 ls

Liste du contenu à l’intérieur du compartiment

aws s3 ls s3://bucket-name

Répertorier le bucket avec un chemin

aws s3 ls s3://bucket-name/path

Copier un fichier

aws s3 cp file.txt s3://my-bucket/ 

Synchroniser les fichiers

aws s3 sync . s3://my-bucket/path

Supprimer le fichier local

rm ./MyFile1.txt

** Tentative de synchronisation sans l’option –delete - rien ne se passe **

aws s3 sync . s3://my-bucket/path

Synchronisation avec suppression - l’objet est supprimé du bucket

aws s3 sync . s3://my-bucket/path --delete

Supprimer l’objet du compartiment

aws s3 rm s3://my-bucket/path/MySubdirectory/MyFile3.txt

Synchronisation avec suppression - le fichier local est supprimé

aws s3 sync s3://my-bucket/path . --delete

Synchronisation avec la classe de stockage à accès peu fréquent

aws s3 sync . s3://my-bucket/path --storage-class STANDARD_IA

Copiez MyFile.txt dans le répertoire actuel vers s3://my-bucket/path

aws s3 cp MyFile.txt s3://my-bucket/path/

Déplacez tous les fichiers .jpg de s3://my-bucket/path vers ./MyDirectory

aws s3 mv s3://my-bucket/path ./MyDirectory --exclude '*' --include '*.jpg' --recursive

Listez le contenu de my-bucket

aws s3 ls s3://my-bucket

** Lister le contenu du chemin dans my-bucket **

aws s3 ls s3://my-bucket/path

Supprimez s3://my-bucket/path/MyFile.txt

aws s3 rm s3://my-bucket/path/MyFile.txt

Supprimez s3://my-bucket/path et tout son contenu

aws s3 rm s3://my-bucket/path --recursive