Une application cliente python qui télécharge et supprime des fichiers de S3 en spécifiant un compartiment

Aperçu

C'était un problème de la part de la console lorsque je voulais obtenir tous les fichiers d'un compartiment particulier, alors J'ai créé un outil qui peut obtenir des fichiers dans un lot en spécifiant un seau. (Peut-être que c'est déjà là ...) J'ai essayé d'ajouter non seulement l'acquisition mais aussi le traitement de suppression. (Si quelque chose se produit en utilisant ceci, veuillez le faire à vos propres risques.)

Bibliothèque utilisée

Description de l'outil

La source elle-même est disponible sur ici. Lorsque vous démarrez l'outil, ce sera comme suit

image.png

        if aws_access_key_id =='':
            s3 = boto3.resource('s3')
            s3client=boto3.client('s3')
        else:
            s3 = boto3.resource('s3',
                                                aws_access_key_id=aws_access_key_id,
                                                aws_secret_access_key=aws_secret_access_key_id)
            s3client=boto3.client('s3', 
                                                aws_access_key_id=aws_access_key_id,
                                                aws_secret_access_key=aws_secret_access_key_id)

        bucketName=self.inputFileName.get()
        resultFolder=self.outputFolder.get()
        dataBaseDir=os.path.join(resultFolder,bucketName)

        executeType=EXECUTE_LIST.index(self.combo.get())


        s3bucket=s3.Bucket(bucketName)
        objs = s3bucket.meta.client.list_objects_v2(Bucket=s3bucket.name)

        for o in objs.get('Contents'):
            key = o.get('Key')
            s3Paths=os.path.splitext(key)
            if len(s3Paths[1]) !=0:
                keys=key.split('/')
                filename=keys[len(keys)-1]
                if executeType==0:
                    outputDataDir=key.split(filename)[0]
                    outputDataDir=os.path.join(dataBaseDir,outputDataDir)
                    os.makedirs(outputDataDir,exist_ok=True)
                    outputDataFile=os.path.join(outputDataDir,filename)
                    s3bucket.download_file(key,outputDataFile)
                else:
                    s3client.delete_object(Bucket=s3bucket.name, Key=key)
objs = s3bucket.meta.client.list_objects_v2(Bucket=s3bucket.name)

Puisqu'il peut être obtenu dans la partie de, il est traité par l'instruction for. Il est également possible de spécifier uniquement des dossiers et des fichiers spécifiques en ajoutant Prefix à l'argument.

Recommended Posts

Une application cliente python qui télécharge et supprime des fichiers de S3 en spécifiant un compartiment
Un script python qui supprime les fichiers ._DS_Store et ._ * créés sur Mac
Créez une application qui saisit, affiche et supprime des formulaires à l'aide de Python / Flask au lieu de DB.
Une bibliothèque qui surveille la vie et la mort d'autres machines en envoyant un ping à partir de Python
Une note qui déploie une application Python de Circle CI vers Elastic Beanstalk et avertit Slack
Manipuler des tables BigQuery à partir d'un client Python
Étude à partir de Python Lecture et écriture de fichiers Hour9
Un joli nimporter qui connecte nim et python
"Kit Python" qui appelle des scripts Python depuis Swift
Lire ligne par ligne à partir d'un fichier avec Python
[Python] Renommez tous les fichiers image dans un dossier spécifique par date et heure de prise de vue
[Python] Un bloc-notes qui traduit et télécharge le fichier ipynb de GitHub en japonais.
D'un livre que les programmeurs peuvent apprendre ... (Python): Pointer
Copier les fichiers S3 de Python vers GCS à l'aide de GSUtil
Récupérer des fichiers depuis Linux en utilisant paramiko et scp [Python]
[Python] Supprimer en spécifiant une balise avec Beautiful Soup
[Python] Démarrez un fichier de commandes à partir de Python et passez des variables.
Feuille de route d'apprentissage qui vous permet de développer et de publier des services à partir de zéro avec Python