如何解决AWS Python Lambda Client2004HY000:无法创建TCP / IP套接字97引起的MySQL错误
我正在编写Python lambda,并努力解决仅在AWS中部署时才会发生的MySQL错误。该代码在localhost上运行良好,而不必进行存根或模拟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",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",line 219,in _open_connection\n sqlstate=exc.sqlstate)\n"
]
}
解决方法
在除去MySQL连接之外的所有其他依赖项之后,我使该连接在简化的测试用例中工作。我将一次添加一个依赖项,以找出应归咎于哪些依赖项,但是我目前的假设是AWS Systems Manager Param Store,因为我还在日志输出中看到了AccessDeniedException
,并且如果参数存储存在权限问题,将对此进行解释。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。