Exporter la liste de clés incluse dans S3 Bucket dans un fichier

J'ai commencé à utiliser S3 au travail.

La clé S3 est stockée dans la base de données et convient généralement, mais elle est gênante si elle se déplace quelque part.

J'ai donc utilisé boto pour obtenir une liste de clés S3.

Je pense que c'est efficace car il semble que seule HEAD soit lancée.

#! /usr/bin/env python
# -*- coding: utf-8 -*-
"""
Exportez la liste des fichiers contenus dans le compartiment cible vers TSV.
"""
import sys
import os
import csv
from ConfigParser import SafeConfigParser
from getpass import getpass

from boto import connect_s3


AWS_CLI_CONFIG_PATH = os.path.expanduser('~/.aws/config')


def get_aws_config(config_path=AWS_CLI_CONFIG_PATH):
    """
Renvoie la clé suivante de aws cli config
    - aws_access_key_id
    - aws_secret_access_key'
    """
    keys = ['aws_access_key_id', 'aws_secret_access_key']
    cfg = SafeConfigParser()
    with open(config_path, 'r') as fp:
        cfg.readfp(fp)
    return tuple(cfg.get('default', x) for x in keys)


def get_bucket(aws_access_key_id, aws_secret_access_key, bucket_name):
    """
renvoie le compartiment boto S3
    """
    if not aws_access_key_id and not aws_secret_access_key:
        aws_access_key_id, aws_secret_access_key = get_aws_config()
    return connect_s3(aws_access_key_id, aws_secret_access_key).get_bucket(bucket_name)


def write_tsv(aws_access_key_id, aws_secret_access_key, bucket_name, file_name):
    """
Clé de compartiment S3.fichier de liste de noms_Exporter sous le nom TSV.
    """
    #Déterminer le chemin absolu du fichier
    file_path = os.path.abspath(file_name)

    def _writerows(rows):
        with open(file_path, 'a') as fp:
            writer = csv.writer(fp, dialect='excel-tab')
            writer.writerows(rows)

    #Exporter l'en-tête
    _writerows([('key_name', )])

    #Corps d'exportation
    rows = []
    for key in get_bucket(aws_access_key_id, aws_secret_access_key, bucket_name).list():
        rows.append(key.name)
        if len(rows) > 1000:
            _writerows(rows)
            rows = []
    else:
        _writerows(rows)


if __name__ == '__main__':
    if len(sys.argv) != 2:
        print('Please specify output filename.')

    else:
        print('Please input the aws_access_key_id/aws_secret_access_key and a target bucket name.')
        print('If you don\'t input the aws_access_key_id/aws_secret_access_key, then we use awscli config.')
        aws_access_key_id = getpass('aws_access_key_id: ')
        aws_secret_access_key = getpass('aws_secret_access_key: ')
        bucket_name = raw_input('target bucket name: ')

        if not aws_access_key_id and not aws_secret_access_key and not os.path.isfile(AWS_CLI_CONFIG_PATH):
            print('Please specify the aws_access_key_id/aws_secret_access_key or create awscli config.')
            sys.exit(1)

        write_tsv(
            aws_access_key_id,
            aws_secret_access_key,
            bucket_name,
            sys.argv[1])
        print('Output: {}'.format(sys.argv[1]))

** Sutema ** La société à laquelle j'appartiens semble être qui recrute des employés. Si vous pensez que vous devriez essayer d'écrire Python, veuillez postuler.

Recommended Posts

Exporter la liste de clés incluse dans S3 Bucket dans un fichier
Changer la destination de sortie standard en un fichier en Python
Sortie d'un vidage binaire en binaire et retour dans un fichier binaire
[Python] Comment afficher les valeurs de liste dans l'ordre
Comment obtenir la dernière (dernière) valeur d'une liste en Python
Écrire la sortie standard dans un fichier
Obtenir la valeur d'une clé spécifique jusqu'à l'index spécifié de la liste de dictionnaires en Python
Pour vérifier si la clé spécifiée se trouve dans le compartiment spécifié dans Boto 3
Comment afficher le résultat de sortie de la commande man Linux dans un fichier
Changer la liste dans l'instruction for
Comment spécifier un fichier .ui dans la boîte de dialogue / interface graphique du widget dans PySide
[Linux] Une commande pour obtenir une liste des commandes exécutées dans le passé
Je souhaite trier une liste dans l'ordre des autres listes
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
Comment effacer un taple dans une liste (Python)
Comment créer un fichier JSON en Python
Copiez la liste en Python
Obtenir uniquement les éléments de sous-classe dans une liste
Enregistrer l'objet dans un fichier avec pickle
Sortie sous la forme d'un tableau python
amateur python tente de résumer la liste ②
Comment lire des fichiers dans différents répertoires
Différentes façons de lire la dernière ligne d'un fichier csv en Python
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python
Pour générer une valeur au milieu d'une cellule avec Jupyter Notebook
Comment compter le nombre d'éléments dans Django et sortir dans le modèle
Utilisez libsixel pour générer Sixel en Python et générer le graphe Matplotlib vers le terminal.
[Python] Combiner des listes contenant des nombres en chaînes et les écrire dans un fichier de sortie
La synchronisation de la sortie est incorrecte lorsque la sortie standard (erreur) est convertie en fichier en Python
Je souhaite voir une liste de fichiers WebDAV dans le module Requêtes
N'oubliez pas de fermer le fichier simplement parce qu'il se trouve dans un dossier temporaire
Comment obtenir une liste de fichiers dans le même répertoire avec python
Utilisez tkinter pour déplacer le code de sortie en tant que "A et prétendant être B" en python
Analyser une chaîne JSON écrite dans un fichier en Python
Comment afficher la date de modification d'un fichier en langage C jusqu'à nanosecondes
Obtenir le nom de fichier dans un dossier à l'aide de glob
Comment identifier l'élément avec le plus petit nombre de caractères dans une liste Python?
Comment lister les fichiers dans le répertoire spécifié (plusieurs conditions / recherche de sous-répertoire)
Un mémorandum pour exécuter un script python dans un fichier bat
Je veux échantillonner au hasard un fichier avec Python
Choses à noter lors de l'initialisation d'une liste en Python
Comment vérifier en Python si l'un des éléments d'une liste est dans une autre liste
Sortie de la table spécifiée de la base de données Oracle en Python vers Excel pour chaque fichier
[Mac] Un moyen très simple d'exécuter des commandes système en Python et de générer les résultats
Afficher le résultat de sortie de sklearn.metrics.classification_report sous forme de fichier CSV
Comment trouver le premier élément qui correspond aux critères de la liste Python
Hello World! Liste de sortie en plusieurs langues (mise à jour prévue en temps opportun)
Obtenez de manière récursive la liste Excel dans un dossier spécifique avec python et écrivez-la dans Excel.
Analysez l'API Researchmap avec Python et créez automatiquement un fichier Word pour la liste des succès
Lorsqu'une chaîne de caractères d'une certaine série se trouve dans la clé du dictionnaire, la chaîne de caractères est convertie en valeur du dictionnaire.
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python (version non bloquante)
Définir une tâche pour définir l'environnement de fabric dans YAML
Affectation d'une macro de génération de modèles dans un fichier de script Python à la touche F12
[Sublime Text 2] Toujours exécuter un fichier spécifique dans le projet
Enregistrez le modèle pystan et les résultats dans un fichier pickle
[python] Comment vérifier si la clé existe dans le dictionnaire