我编写了一个python脚本,该脚本连接到我的AWS RDS数据库,以提取一些数据,执行一些webscraping任务,然后将结果导入回到AWS RDS。当前,这在本地可以很好地工作,但是我现在想将代码上传到AWS Lambda并每天运行。
我承认,已经有很多在线信息可以用来做这样的事情,甚至可能还有太多信息,以至于很难轻易找到确切的解决方案。
到目前为止我所做的:
我已经使用基本脚本测试了上述内容,并且可以正常工作。
当我使用主脚本(不久将显示一些代码)时,出现以下错误:
START RequestId: XXXXX Version: $LATEST
module initialization error: 2003: Can't connect to MySQL server on 'XXXXX. XXXXX.us-east-2.rds.amazonaws.com:3306' (110 Connection timed out)
END RequestId: XXXXX
REPORT RequestId: XXXXX Duration: 140196.56 ms Billed Duration: 140200 ms Memory Size: 256 MB Max Memory Used: 55 MB
module initialization error
2003: Can't connect to MySQL server on 'XXXXX.XXXXX.us-east-2.rds.amazonaws.com:3306' (110 Connection timed out)
在我的代码中,我通过两种方式连接到AWS数据库:
第一个使用mysql-connect,它用于检索要处理的整个数据集:
import mysql.connector
cnx = mysql.connector.connect(user='XXXXX', password='XXXXX',
host='XXXXX.XXXXX.us-east-2.rds.amazonaws.com',
port= 3306,
database='XXXXX',
use_unicode=True)
cursor=cnx.cursor(buffered=True)
df = pd.read_sql('SELECT * FROM table’, con=cnx)
同样,此^代码在本地有效。
连接到AWS RDS数据库的第二种方法是将结果插入表中
from sqlalchemy import create_engine
engine = create_engine('mysql+mysqlconnector://{0}:{1}@{2}/{3}'.
format('XXXXX', 'XXXXX',
'XXXXX. XXXXX.us-east-2.rds.amazonaws.com:3306', 'XXXXX'))
df.to_sql(con=engine, name=’table’, if_exists='append',index=False)
同样^这也可以在本地使用,但似乎无法通过AWS Lambda起作用
我对使用AWS非常陌生,似乎确实有很多不同的功能和选项,如果我错过了明显的东西,我深表歉意。如果我需要启用某些步骤的选项,请告诉我。任何帮助将不胜感激。
其他信息: