我已经在GCP项目中托管了我的MySQL实例,我想在AWS Lambda函数中使用它的数据库。我已经尝试了所有方法来连接到GCP中的MySQL数据库实例,但是Lambda函数给出了超时错误,尽管我已经保持了足够的超时时间来运行该函数。我还压缩了安装了MySQL和pymysql的包,然后上传到Lambda,但问题仍然存在。
下面是我为连接到数据库而编写的代码:
import json
import boto3
import mysql.connector
import MySQLdb
def lambda_handler(event, context):
mydb = MySQLdb.connect(
host="Public Ip of MySQL Instance",
user="Username",
password="Password",
db="DbName"
)
cur = db.cursor()
cur.execute("SELECT * FROM budget")
for row in cur.fetchall():
print(row[0])
db.close()下面是我收到的错误:
{
"errorMessage": "(2003, \"Can't connect to MySQL server on '36.71.43.131' (timed out)\")",
"errorType": "OperationalError",
"stackTrace": [
" File \"/var/lang/lib/python3.8/imp.py\", line 234, in load_module\n return load_source(name, filename, file)\n",
" File \"/var/lang/lib/python3.8/imp.py\", line 171, in load_source\n module = _load(spec)\n",
" File \"<frozen importlib._bootstrap>\", line 702, in _load\n",
" File \"<frozen importlib._bootstrap>\", line 671, in _load_unlocked\n",
" File \"<frozen importlib._bootstrap_external>\", line 783, in exec_module\n",
" File \"<frozen importlib._bootstrap>\", line 219, in _call_with_frames_removed\n",
" File \"/var/task/lambda_function.py\", line 10, in <module>\n connection = pymysql.connect(host='36.71.43.131',\n",
" File \"/var/task/pymysql/connections.py\", line 353, in __init__\n self.connect()\n",
" File \"/var/task/pymysql/connections.py\", line 664, in connect\n raise exc\n"
]
}请帮我解决这个问题。我尝试了所有不同的方法来连接到我的SQL实例,但都不起作用。
发布于 2021-02-05 23:15:47
根据错误消息,尝试直接连接MySQL实例的公网IP地址。
您必须将MySQL实例配置为具有公共IPv4地址,并通过adding authorized addresses to your instance接受来自特定IP地址或地址范围的连接。
要配置对MySQL实例的访问,请执行以下操作:
https://stackoverflow.com/questions/66048491
复制相似问题