![](/img/trans.png)
[英]2003 (HY000): Can't connect to MySQL server on '***.database.windows.net:3306' (10060)
[英]MySQL Error from AWS Python Lambda Client (2004 (HY000): Can't create TCP/IP socket (97))
我正在写一个 Python lambda 并且正在努力解决仅在部署在 AWS 中时才会发生的 MySQL 错误。 该代码在本地主机上运行良好,而无需对 MySQL 连接进行存根或模拟(我通过注释掉存根并验证真实请求是否与我在数据库中看到的相匹配来在本地对其进行测试)。
我确认 MySQL 数据库同时具有网络级和用户/数据库级 IP 白名单,该白名单具有适用于本地开发和部署环境的正确 IP 地址。 我还确认我的 lambda 安全组不会阻止任何会导致此行为的出站端口。 根据我目前的了解,这只剩下一种可能性,即代码中出现问题。
上面的上下文或下面的示例中是否有任何内容表明可能的根本原因?
import mysql.connector
def lambda_handler(event, context=None):
try:
with mysql.connector.connect(
host="database_host",
user="database_username",
password="database_password",
database="database_name",
) as mydb:
print("it worked!")
except Exception as e:
print(e)
{
"errorMessage": "2004 (HY000): Can't create TCP/IP socket (97)",
"errorType": "DatabaseError",
"stackTrace": [
" File \"/var/task/src/main.py\", line 70, in lambda_handler\n raise e\n",
" File \"/var/task/src/main.py\", line 64, in lambda_handler\n for record in data:\n",
" File \"/var/task/src/main.py\", line 82, in get_zander_data\n host=db_hostname, user=db_username, password=db_password, database=db_name\n",
" File \"/var/task/mysql/connector/__init__.py\", line 264, in connect\n return CMySQLConnection(*args, **kwargs)\n",
" File \"/var/task/mysql/connector/connection_cext.py\", line 80, in __init__\n self.connect(**kwargs)\n",
" File \"/var/task/mysql/connector/abstracts.py\", line 966, in connect\n self._open_connection()\n",
" File \"/var/task/mysql/connector/connection_cext.py\", line 219, in _open_connection\n sqlstate=exc.sqlstate)\n"
]
}
在删除 MySQL 连接之外的所有其他依赖项后,我在简化的测试用例中获得了工作连接。 我打算一次将依赖项添加回一个,以确定应该归咎于哪些依赖项,但我目前的假设是 AWS Systems Manager Param Store,因为我还在日志 output 中看到了AccessDeniedException
,如果参数存储存在权限问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.