Print
카테고리: [ Amazon Web Services ]
조회수: 11125

1. 개요

lambda 함수에서 RDS 데이터를 이용하여 처리하는 내용


2. 파이썬 코드

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)

3. 패키지화

자세한 방법은 https://sarc.io/index.php/aws/805-aws-lambda-zip-python 링크를 확인한다.

3.1. py 파일 생성

위 코드를 py 파일로 만든다.

3.2. pymysql 패키지 설치

$ pip3 install pymysql
Collecting pymysql
  Downloading https://files.pythonhosted.org/packages/e5/07/c0f249aa0b7b0517b5843eeab689b9ccc6a6bb0536fc9d95e65901e6f2ac/PyMySQL-0.8.0-py2.py3-none-any.whl (83kB)
    100% |████████████████████████████████| 92kB 865kB/s
Installing collected packages: pymysql
Successfully installed pymysql-0.8.0

패키지 설치 시에 distutils.errors.DistutilsOptionError: must supply either home or prefix/exec-prefix -- not both 에러가 발생한다면 다음의 아티클을 참조하자.

3.3. zip 파일 생성


4. 역할(role) 생성

4.1. 이름

예: role-lambda-execution

4.2. Lambda 대상

4.3. 정책 연결


5. 알아두면 좋은 것들

5.1. Security Group

5.2. 한글 깨짐