今日もシュクシュクと!

ソフトウェア・エンジニアを目指して修行中の日々。学習もコツコツと。そして粛々と。

LambdaでRDSに接続する(python)

LambdaからRDSに接続した際のメモ。

1. EC2のLinuxを起動し、作業用のディレクトリを作成する

2. viでlambda_function.py を作成する

import sys
import logging
import rds_config
import pymysql
#rds settings
rds_host  = rds_config.db_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(host=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)

3. lambda_function.py より参照される rds_config.py を作成する

※下記はRDSの設定に合わせること

#config file containing credentials for rds mysql instance
db_endpoint = "RDS:エンドポイント"
db_username = "RDS:ユーザーID"
db_password = "RDS:パスワード"
db_name = "RDS:DB名"

4. pymysqlを作業用ディレクトリに追加する

pip install pymysql -t .

5. 作成したソース及びpymysqlをアーカイブする

zip -r app.zip ./*

6. lambda関数を作成し、作成したzipをアップロードする

  • Pythonのランタイムは Python 3.7 を選択すること