Charger des tables AWS-RDS / PostgreSQL avec AWS-Lambda + Python

Charger des tables AWS-RDS / PostgreSQL avec AWS-Lambda + Python

introduction

`Ceci est un article sur l'environnement Mac, mais la procédure est la même pour l'environnement Windows. Veuillez lire et essayer la partie dépendant de l'environnement. ''

Objectif

Après avoir lu cet article jusqu'au bout, vous pourrez:

No. Aperçu mot-clé
1 codage Python, psycopg2
2 Paramètres Lambda Lambda

Environnement d'exécution

environnement Ver.
macOS Catalina 10.15.3
Python 3.7.3
psycopg2 2.8.4

Code source

Je pense que vous pouvez approfondir votre compréhension en suivant réellement le contenu de l'implémentation et le code source. Veuillez l'utiliser par tous les moyens.

GitHub

Articles Liés

Fonctionnalités d'AWS-Lambda

Ce service est un système de paiement à l'utilisation. Notez s'il vous plaît.

Flux global

  1. Écrivez du code Python
  2. Créez une fonction Lambda
  3. Définissez les variables d'environnement
  4. Définissez les paramètres de base
  5. Configurer le VPC

1. Écrivez du code Python

codage

app/lambda_function.py


"""app/lambda_function.py
"""

import os
import sys

import psycopg2


class Database():
    """Database
    """
    class Parameter():
        """Parameter
        """

        def __init__(self, host, port, dbname, table, user, password, query):
            self.host = host
            self.port = port
            self.dbname = dbname
            self.table = table
            self.user = user
            self.password = password
            self.query = query

    def __init__(self, param):
        self.db = param
        self.header = tuple()
        self.records = list()
        self.counts = int()

    def _connection(self):
        """_connection
        """
        print('connect to db: {}/{}'.format(self.db.host, self.db.dbname))
        return psycopg2.connect(
            host=self.db.host,
            port=self.db.port,
            dbname=self.db.dbname,
            user=self.db.user,
            password=self.db.password
        )

    def query(self):
        """query
        """
        with self._connection() as conn:
            with conn.cursor() as cursor:
                try:
                    cursor.execute(self.db.query)
                    self.header = cursor.description
                    self.records = cursor.fetchall()
                    self.counts = len(self.records)
                except psycopg2.Error as e:
                    print(e)
                    sys.exit()
        return True


def lambda_handler(event, context):
    """lambda_handler
    """
    print('event: {}'.format(event))
    print('context: {}'.format(context))

    param = Database.Parameter(
        host=os.getenv('DB_HOST', ''),
        port=os.getenv('DB_PORT', ''),
        dbname=os.getenv('DB_DBNAME', ''),
        table=os.getenv('DB_TABLE', ''),
        user=os.getenv('DB_USER', ''),
        password=os.getenv('DB_PASSWORD', ''),
        query=os.getenv('DB_QUERY', '')
    )

    db = Database(param=param)
    db.query()

    return {
        'status_code': 200,
        'records': str(db.records),
        'counts': db.counts
    }


if __name__ == '__main__':
    print(lambda_handler(event=None, context=None))

2. Créez une fonction Lambda

Exécutez régulièrement le scraping WEB avec AWS-Lambda + Python + Cron](https://qiita.com/nsuhara/items/0d36600511fc162827f6) et effectuez jusqu'à zip upload

3. Définissez les variables d'environnement

Variable d'environnement

  1. Définir à partir de ʻEdit dans la section Variables d'environnement`
Clé valeur
DB_HOST {host}
DB_PORT {port}
DB_DBNAME {dbname}
DB_TABLE {table}
DB_USER {user}
DB_PASSWORD {password}
DB_QUERY {query}

`{} est différent pour chaque environnement. ''

4. Définissez les paramètres de base

configuration de base

  1. Définir depuis ʻEdit dans la section Paramètres de base`
  2. Le délai d'expiration peut être réglé jusqu'à «15 minutes 0 secondes»
  3. La mémoire peut être configurée jusqu'à 3008 Mo

5. Configurer le VPC

VPC

  1. Définir à partir de ʻEdit dans la section VPC`
  2. Définissez «VPC», «sous-réseau», «groupe de sécurité»

Doit correspondre aux paramètres RDS

Recommended Posts

Charger des tables AWS-RDS / PostgreSQL avec AWS-Lambda + Python
[Python] Joindre deux tables avec des pandas
Charger une image gif avec Python + OpenCV
Utiliser PostgreSQL avec Lambda (Python + psycopg2)
[Note] Obtenir des données de PostgreSQL avec Python
Enregistrer / charger la base de données en mémoire avec sqlite3 de python
FizzBuzz en Python3
Grattage avec Python
Statistiques avec python
Grattage avec Python
Python avec Go
Intégrer avec Python
AES256 avec python
Testé avec Python
python commence par ()
avec syntaxe (Python)
Bingo avec python
Écrire des données CSV sur AWS-S3 avec AWS-Lambda + Python
Zundokokiyoshi avec python
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
[Linux] [Python] [Pandas] Charger la base de données Microsoft Access (* .mdb) avec Pandas
Communication série avec Python
Zip, décompressez avec python
Jugement des nombres premiers avec Python
Python avec eclipse + PyDev.
Communication de socket avec Python
Analyse de données avec python 2
Grattage en Python (préparation)
Essayez de gratter avec Python.
Recherche séquentielle avec Python
"Orienté objet" appris avec python
Exécutez Python avec VBA
Résolvez AtCoder 167 avec python
Communication série avec python
[Python] Utiliser JSON avec Python
Apprenez Python avec ChemTHEATER
Exécutez prepDE.py avec python3
Collecter des tweets avec Python
3. 3. Programmation IA avec Python
Méthode Kernel avec Python
Non bloquant avec Python + uWSGI
Grattage avec Python + PhantomJS
Publier des tweets avec python
Conduisez WebDriver avec python
Utiliser mecab avec Python 3
[Python] Redirection avec CGIHTTPServer
Analyse vocale par python
Pensez à yaml avec python
Utiliser Kinesis avec Python
Premiers pas avec Python
Getter Zundko avec python
Gérez Excel avec python
Loi d'Ohm avec Python
Jugement des nombres premiers avec python
Exécutez Blender avec python