从Sagemaker连接Amazon RDS MySQL数据库时遇连接超时错误求助
解决Pymysql连接RDS超时(2003错误)的非公网方案
核心思路:基于VPC私有网络访问(替代公网)
既然不想依赖公网访问,最稳妥的方式是让Sagemaker与RDS处于同一个VPC的私有网络环境中,既避免公网传输的延迟问题,也能提升安全性。
1. 调整Sagemaker的网络配置
- 新建Sagemaker笔记本实例时,在网络配置环节选择与RDS完全相同的VPC、子网;
- 若已有实例,先停止实例,进入配置页面修改网络设置,指定同VPC的子网。
2. 配置安全组规则(关键步骤)
你提到未配置Sagemaker安全组,按以下操作调整:
- 进入EC2控制台,找到Sagemaker实例对应的安全组(无则新建);
- 给该安全组添加出站规则:允许TCP协议访问RDS的3306端口(或你自定义的数据库端口),目标设为RDS的安全组ID(更安全),或者RDS所在的私有IP段;
- (可选优化)RDS安全组默认允许所有流量,建议收紧:修改RDS安全组的入站规则,仅允许Sagemaker的安全组访问3306端口,减少不必要的暴露。
3. 验证网络连通性
在Sagemaker实例的终端中执行以下命令,确认端口可达:
nc -zv <RDS私有端点> 3306 # 或用telnet命令 telnet <RDS私有端点> 3306
注意:必须使用RDS的私有DNS端点(而非公网端点),私有端点仅在VPC内可解析访问。
4. IAM认证相关检查(若启用)
如果RDS开启了IAM数据库认证,需补充以下配置:
- 给Sagemaker的执行角色添加
rds-db:connect权限,资源指定为你的RDS ARN; - 连接数据库时,使用IAM生成的临时密码替代固定密码,避免硬编码风险。
内容的提问来源于stack exchange,提问作者Neethu
相关产品推荐
相关产品推荐

