PUT gzip direkt in S3 in Python

Was du machen willst

Beispielcode

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'
    #Orakelverbindung
    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)
            #Name der Tabellenspalte
            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

Zusammenfassung

Zuerst habe ich eine Datei in tmp erstellt und sie dann in S3 hochgeladen. Ich konnte mit io.BytesIO direkt auf S3 PUT.

Recommended Posts

PUT gzip direkt in S3 in Python
3 Schritte, um Python + Mecab nur in yum zu setzen
So fügen Sie Python ein Modul hinzu, das Sie in Julialang eingefügt haben
Beispiel, um Python Kivy in eine Datei zu packen
So löschen Sie stdout in Python
Melden Sie sich auf der Website in Python an
Sprechen mit Python [Text zu Sprache]
Wie man in Python entwickelt
Post an Slack in Python
Löse die Inselsuche (entspricht Paiza Rang S) mit Python
Löse mod7 Wahrsagerei (entspricht Paiza Rang S) in Python
Konvertieren Sie Markdown in Python in PDF
Setzen Sie MeCab in "Windows 10; Python3.5 (64bit)"
So sammeln Sie Bilder in Python
Setzen Sie Python, Numpy, OpenCV3 in Ubuntu14
Verwendung von SQLite in Python
Bis Sie Python in Docker einfügen
Im Python-Befehl zeigt Python auf Python3.8
Versuchen Sie, Trace in Python zu berechnen
Versuchen Sie, Daten in MongoDB abzulegen
Wie man MySQL mit Python benutzt
So verpacken Sie C in Python
Verwendung von ChemSpider in Python
6 Möglichkeiten zum Stringen von Objekten in Python
Verwendung von PubChem mit Python
Umgang mit Japanisch mit Python
Eine Alternative zu "Pause" in Python
So verwenden Sie Python in Pyenv unter MacOS mit PyCall
Ich habe versucht, PLSA in Python zu implementieren
[Einführung in Python] Wie verwende ich eine Klasse in Python?
Versuchen Sie, sich mit Python bei qiita anzumelden
Installieren Sie Pyaudio, um Wellen in Python zu spielen
Ich habe versucht, Permutation in Python zu implementieren
Methode zum Erstellen einer Python-Umgebung in Xcode 6
Dynamisches Definieren von Variablen in Python
So machen Sie R chartr () in Python
Senden Sie mit Python (Python3) E-Mails an mehrere Empfänger.
Konvertieren Sie die psd-Datei in Python in png
Beispielskript zum Überfüllen von Signalen in Python
Ich habe versucht, PLSA in Python 2 zu implementieren
So setzen Sie die Standardcodierung in Python auf utf-8
Dekorateur zur Vermeidung von UnicodeEncodeError in Python 3 print ()
So arbeiten Sie mit BigQuery in Python
Melden Sie sich mit Anforderungen in Python bei Slack an
Wie bekomme ich Stacktrace in Python?
So zeigen Sie die neunundneunzig Tabelle in Python an
Einfache Möglichkeit, Wikipedia mit Python zu verwenden
So extrahieren Sie einen Polygonbereich in Python
So überprüfen Sie die Version von opencv mit Python
Ich habe versucht, ADALINE in Python zu implementieren
[Python] Pandas in 10 Minuten vollständig zu verstehen
Werfen Sie Incoming Webhook in Python auf Mattermost
Modul zum Generieren des Wortes N-Gramm in Python
Verweisen auf Umgebungsvariablen in Python in Blender
Ich wollte ABC159 mit Python lösen
Ich habe versucht, PPO in Python zu implementieren
So wechseln Sie die Python-Version in Cloud9
So passen Sie den Bildkontrast in Python an
Verwendung von __slots__ in der Python-Klasse
[V11 ~] Ein Memorandum für Misskey
So füllen Sie mit Python dynamisch Nullen aus