由于lambda函数的Python版本本身不支持mysql。

lambda连接mysql的方法如下:

首先建立lambda的Python文件

import sys
import logging
# import rds_config
import pymysql

host="rds-host"
port=3306
dbname="database-name"
user="admin"
password="db_password"

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

conn = pymysql.connect(host, user=user, passwd=password, db=dbname, connect_timeout=5)

def lambda_handler(event, context):
    """
    This function fetches content from MySQL RDS instance
    """

    item_count = 0

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

把Python脚本打包进压缩文件

zip -g function.zip lambda_function.py

由于Python没有mysql库,所以用--target安装到package路径下面,然后将package下的文件打包进zip

pip install --target ./package pymysql boto3
cd package
zip -r9 ../function.zip .

之后更新lambda函数

aws lambda update-function-code --function-name <lambda函数名> --zip-file fileb://function.zip

此外,可以把RDS 的 Public Accessible设置为false,也就是只能同VPC下访问。

然后,在Lambda函数中设置VPC,但是要记得给Lambda函数添加对应的Role:AWSLambdaVPCAccessExecutionRole

最后修改:2021 年 06 月 01 日 02 : 24 PM
如果觉得我的文章对你有用,请随意赞赏