PUT gzip directement dans S3 en Python

Chose que tu veux faire

Exemple de code

lambda_function.py


import csv
import gzip
import io
import os
import boto3
import cx_Oracle

DB_HOST = os.environ.get('DB_HOST')
DB_PORT = os.environ.get('DB_PORT')
DB_USER = os.environ.get('DB_USER')
DB_PASS = os.environ.get('DB_PASS')
DB_SID = os.environ.get('DB_SID')

AWS_S3_BUCKET_NAME = 'hoge'

s3 = boto3.client('s3')


def lambda_handler(event, context):

    file_name = 'hoge.csv.gz'
    #connexion oracle
    connection = cx_Oracle.connect(DB_USER, DB_PASS, f'(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST={DB_HOST}) (PORT={DB_PORT}))(CONNECT_DATA=(SID={DB_SID})))')
    with connection:
        with connection.cursor() as cursor:
            sql = 'SELECT * FROM hoge'
            cursor.execute(sql)
            #Nom de la colonne de table
            csv_header = [column_name[0] for column_name in cursor.description]

            bio = io.BytesIO()
            with gzip.GzipFile(fileobj=bio, mode='wb') as gzip_file:
                with io.TextIOWrapper(gzip_file, encoding='utf-8') as wrapper:
                    writer = csv.writer(wrapper, lineterminator='\n', quoting=csv.QUOTE_ALL)
                    writer.writerow(csv_header)
                    while 1:
                        csv_detail = cursor.fetchmany()
                        if len(csv_detail) == 0:
                            break
                        writer.writerows(csv_detail)
            bio.seek(0)
            s3.put_object(Bucket=AWS_S3_BUCKET_NAME, Body=bio, Key=file_name)

    return event

Sommaire

Au début, j'ai créé un fichier dans tmp, puis je l'ai téléchargé sur S3. J'ai pu PUT directement sur S3 en utilisant io.BytesIO.

Recommended Posts

PUT gzip directement dans S3 en Python
3 étapes pour mettre Python + mecab dans yum uniquement
Pour ajouter un module à python que vous mettez dans Julialang
Exemple pour mettre Python Kivy dans un fichier
Pour vider stdout en Python
Connectez-vous au site Web en Python
Parler avec Python [synthèse vocale]
Comment développer en Python
Publier sur Slack en Python
Résoudre la recherche d'île (équivalent au rang S de paiza) avec Python
Résolvez la divination mod7 (équivalent au rang S de Paiza) en Python
Convertir Markdown en PDF en Python
Mettez MeCab dans "Windows 10; Python3.5 (64 bits)"
Comment collecter des images en Python
Mettez python, numpy, opencv3 dans ubuntu14
Comment utiliser SQLite en Python
Jusqu'à ce que vous mettiez Python dans Docker
Dans la commande python, python pointe vers python3.8
Essayez de calculer Trace en Python
Essayez de mettre des données dans MongoDB
Comment utiliser Mysql avec python
Comment envelopper C en Python
Comment utiliser ChemSpider en Python
6 façons d'enchaîner des objets en Python
Comment utiliser PubChem avec Python
Comment gérer le japonais avec Python
Une alternative à `pause` en Python
Pour utiliser python, mettez pyenv sur macOS avec PyCall
J'ai essayé d'implémenter PLSA en Python
[Introduction à Python] Comment utiliser la classe en Python?
Essayez de vous connecter à qiita avec Python
Installez Pyaudio pour lire des vagues en python
J'ai essayé d'implémenter la permutation en Python
Méthode pour créer un environnement Python dans Xcode 6
Comment définir dynamiquement des variables en Python
Comment faire R chartr () en Python
Envoyer des e-mails à plusieurs destinataires avec Python (Python3)
Convertir un fichier psd en png en Python
Exemple de script pour piéger les signaux en Python
J'ai essayé d'implémenter PLSA dans Python 2
Pour définir le codage par défaut sur utf-8 en python
Decorator pour éviter UnicodeEncodeError dans Python 3 print ()
Comment utiliser BigQuery en Python
Connectez-vous à Slack à l'aide de requêtes en Python
Comment obtenir stacktrace en python
Comment afficher la table quatre-vingt-dix-neuf en python
Un moyen simple d'utiliser Wikipedia avec Python
Comment extraire une zone de polygone en Python
Comment vérifier la version d'opencv avec python
J'ai essayé d'implémenter ADALINE en Python
[Python] pandas à bien comprendre en 10 minutes
Lancer le Webhook entrant vers Mattermost en Python
Module pour générer le mot N-gramme en Python
Pour référencer des variables d'environnement en Python dans Blender
Je voulais résoudre ABC159 avec Python
J'ai essayé d'implémenter PPO en Python
Comment changer de version de Python dans cloud9
Comment régler le contraste de l'image en Python
Comment utiliser __slots__ dans la classe Python
[V11 ~] Un mémorandum à mettre dans Misskey
Comment remplir dynamiquement des zéros avec Python