Comment accéder à RDS depuis Lambda (python)

Expliquez en une seule ligne

Découvrez comment accéder à RDS à partir d'une fonction Lambda écrite en Python.

Page de référence

Il existe un didacticiel dans la documentation officielle d'AWS, alors suivez-le. Cependant, dans le tutoriel, l'opération est basée sur CLI, nous la remplacerons donc par l'opération du mannequin le cas échéant.

procédure

  1. Créez RDS
  2. Créez un package de déploiement Lambda (fichier zip)
  3. Créez un rôle IAM à accorder à Lambda
  4. Créer une fonction Lambda
  5. Exécution des tests

Regardons de plus près étape par étape.

1. Créez RDS

Créez un RDS à partir du mannequin AWS. Il faudra un certain temps pour créer. Une fois que vous l'avez créé, assurez-vous de pouvoir y accéder localement.

$ mysql -u username -h lambda.xxxxxxxxxxxx.us-east-1.rds.amazonaws.com -p

Correction du groupe de sécurité

Lorsque vous créez un RDS, la source est restreinte par défaut en tant que paramètre de groupe de sécurité. Par conséquent, même s'il est accessible à partir de l'environnement local, il existe un problème en raison du fait qu'il ne peut plus être accédé à partir de Lambda par la suite. Par conséquent, modifiez le groupe de sécurité de l'instance RDS appropriée et remplacez la source par n'importe quelle adresse IP (0.0.0.0/0). (Définissez une adresse IP appropriée en fonction de vos besoins.)

2. Créez un package de déploiement Lambda (fichier zip)

Supposons que vous travaillez actuellement sur / path / to / workdir /. Veuillez lire / path / to / workdir / comme il convient. Créez un script Python similaire à ce qui suit. Le nom du fichier est ʻapp.py`.

import sys
import logging
import rds_config
import pymysql
#rds settings
rds_host  = "rds-instance-endpoint"
name = rds_config.db_username
password = rds_config.db_password
db_name = rds_config.db_name


logger = logging.getLogger()
logger.setLevel(logging.INFO)

try:
    conn = pymysql.connect(rds_host, user=name, passwd=password, db=db_name, connect_timeout=5)
except:
    logger.error("ERROR: Unexpected error: Could not connect to MySql instance.")
    sys.exit()

logger.info("SUCCESS: Connection to RDS mysql instance succeeded")
def handler(event, context):
    """
    This function fetches content from mysql RDS instance
    """

    item_count = 0

    with conn.cursor() as cur:
        cur.execute("create table Employee3 ( EmpID  int NOT NULL, Name varchar(255) NOT NULL, PRIMARY KEY (EmpID))")
        cur.execute('insert into Employee3 (EmpID, Name) values(1, "Joe")')
        cur.execute('insert into Employee3 (EmpID, Name) values(2, "Bob")')
        cur.execute('insert into Employee3 (EmpID, Name) values(3, "Mary")')
        conn.commit()
        cur.execute("select * from Employee3")
        for row in cur:
            item_count += 1
            logger.info(row)
            #print(row)


    return "Added %d items from RDS MySQL table" %(item_count)

Dans ʻapp.py, rds_config et pymysql` sont importés, alors préparez-les.

Tout d'abord, enregistrez le contenu suivant sous rds_config.py.

#config file containing credentials for rds mysql instance
db_username = "username"
db_password = "password"
db_name = "databasename"

Ensuite, utilisez pip pour enregistrer pymysql dans / chemin / vers / rép_travail /.

$ pip install pymysql -t /path/to/workdir/

Maintenant que vous avez les fichiers dont vous avez besoin, compressez-les. La mise en garde ici est qu'au lieu d'archiver tout le répertoire, archivez sous / path / to / workdir /.

$ zip -r app.zip /path/to/workdir/*

Ici, j'ai créé un fichier zip appelé ʻapp.zip`.

3. Créez un rôle IAM à accorder à Lambda

Créez un nouveau rôle sur l'écran AWS IAM. À ce moment-là, sélectionnez «AWS Lambda» comme rôle de service AWS. Ici, nous l'appelons «rôle-lambda».

4. Créer une fonction Lambda

Créez une fonction Lambda à partir d'un mannequin AWS. Cette fois, j'ai choisi «Fonction vide» et j'ai choisi API Gateway comme déclencheur. Veuillez sélectionner les nécessaires dans cette zone. Les autres éléments de réglage sont les suivants.

Créez une fonction Lambda avec ce paramètre.

5. Essai de fonctionnement

Enfin, exécutez-le manuellement. Vous pouvez le faire manuellement en appuyant sur le bouton «Test» sur l'écran Lambda. Si vous obtenez les résultats suivants, vous réussissez.

"Added 3 items from RDS MySQL table"

Recommended Posts

Comment accéder à RDS depuis Lambda (python)
Comment accéder à wikipedia depuis python
Comment utiliser Python lambda
[Lambda] [Python] Publier sur Twitter depuis Lambda!
Comment mettre à jour Google Sheets à partir de Python
Comment accéder à la banque de données de l'extérieur
Comment installer Python
Accéder à bitcoind depuis python
Changements de Python 3.0 à Python 3.5
Changements de Python 2 à Python 3.0
Comment installer python
Comment ouvrir un navigateur Web à partir de python
Étude de Python Hour7: Comment utiliser les classes
[Python] Comment lire les données de CIFAR-10 et CIFAR-100
Comment générer un objet Python à partir de JSON
Comment bien gérer les commandes Linux à partir de Python
Exporter un instantané RDS vers S3 avec Lambda (Python)
[AWS / Lambda] Comment charger une bibliothèque externe Python
Comment obtenir la valeur du magasin de paramètres dans lambda (en utilisant python)
[Python] Comment supprimer les valeurs en double de la liste
[2020.8 dernière] Comment installer Python
Comment "mettre en cache" l'accès à la mémoire FPGA à partir de Linux
Publier de Python vers Slack
Comment installer Python [Windows]
python3: Comment utiliser la bouteille (2)
Comment récupérer des données d'image de Flickr avec Python
[Python] Comment utiliser la liste 1
Comment mettre à jour Tkinter de Python vers la version 8.6
Anaconda mis à jour de 4.2.0 à 4.3.0 (python3.5 mis à jour vers python3.6)
Interroger Athena depuis Lambda Python
Accéder à Oracle DB depuis Python
Comment utiliser Python Argparse
Python: comment utiliser pydub
[Python] Comment utiliser checkio
Comment télécharger des fichiers depuis Selenium of Python dans Chrome
Passer de python2.7 à python3.6 (centos7)
Comment exécuter Notepad ++ Python
Connectez-vous à sqlite depuis python
Exécuter la fonction Python à partir de Powershell (comment passer des arguments)
Comment changer la version de Python
Comment développer en Python
[python] Comment juger scalaire
[Python] Comment utiliser input ()
[Python] Comment utiliser virtualenv
[Python] Comment appeler une fonction de c depuis python (édition ctypes)
python3: Comment utiliser la bouteille (3)
python3: Comment utiliser la bouteille
Comment utiliser les octets Python
Accès ODBC à SQL Server depuis Linux avec Python
Comment découper un bloc de plusieurs tableaux à partir d'un multiple en Python
Comment importer la bibliothèque Python configurée dans EFS dans Lambda
Comment exécuter un programme Python à partir d'un script shell
Comment lancer AWS Batch à partir de l'application cliente Python
Comment se connecter à diverses bases de données à partir de Python (PEP 249) et SQL Alchemy
Comment échantillonner à partir de n'importe quelle fonction de densité de probabilité en Python
[Python] Exportez régulièrement de CloudWatch Logs vers S3 avec Lambda
Comment appeler Python ou Julia à partir de Ruby (implémentation expérimentale)
Appelez Matlab depuis Python pour optimiser