如何从位于其他 VPC 中的 Amazon SageMaker Notebook 实例连接到 Amazon RDS 数据库实例?
我想将 Amazon SageMaker Notebook 实例连接到位于其他虚拟私有云 (VPC) 中的 Amazon Relational Database Service (Amazon RDS) 数据库实例。
解决方法
要将 SageMaker Notebook 实例连接到位于不同 VPC 中的 Amazon RDS 数据库实例,请完成以下步骤:
-
在 VPC 对等连接处于活动状态后,更新路由表。Amazon RDS 数据库实例子网和 SageMaker Notebook 实例子网必须能够相互路由。
例如,对于以下 CIDR 数据块:
**SageMaker VPC CIDR 数据块:**192.168.0.0/16
**Amazon RDS 数据库实例 VPC CIDR 数据块:**10.0.0.0/24Amazon RDS 数据库实例子网路由表如下所示:
目的地 目标 10.0.0.0/24 本地 192.168.0.0/16 从下拉列表中选择 VPC 对等连接 SageMaker Notebook 实例子网路由表如下所示:
目的地 目标 10.0.0.0/24 从下拉列表中选择 VPC 对等连接 192.168.0.0/16 本地 -
要允许流量从 Notebook 实例流向 Amazon RDS 数据库实例,请确认两个安全组的配置均正确。
在 Notebook 实例安全组上,确认存在允许流向 Amazon RDS 数据库实例的出站规则。
在数据库实例安全组上,确认存在允许 Notebook 实例的安全组、VPC CIDR 数据块或子网 CIDR 数据块的入站规则。 -
要测试连接,请在 SageMaker Notebook 实例的终端运行以下命令。
**注意:**将示例中的 mydatabase.c5y9vfc8igjj.ap-southeast-2.rds.amazonaws.com 替换为您的数据库实例端点。将 3306 替换为您的数据库实例端口。curl -v mydatabase.c5y9vfc8igjj.ap-southeast-2.rds.amazonaws.com:3306
故障排除
如果 Notebook 实例已启用直接互联网访问权限,则测试命令将失败并显示 Connection timed out 错误。如果发生此故障,请运行以下命令在操作系统级别检查 Notebook 实例的路由表:
route -n
启用直接互联网访问权限后,路由表类似于以下内容:
Kernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.16.0.1 0.0.0.0 UG 0 0 0 eth0 10.0.32.0 0.0.0.0 255.255.224.0 U 0 0 0 eth1 169.254.0.0 0.0.0.0 255.255.255.0 U 0 0 0 veth\_def\_agent 169.254.169.254 0.0.0.0 255.255.255.255 UH 0 0 0 eth0 172.16.0.0 0.0.0.0 255.255.224.0 U 0 0 0 eth0 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-5a785eca34a3 192.168.0.0 0.0.0.0 255.255.128.0 U 0 0 0 eth2 192.168.0.0 192.168.0.1 255.255.0.0 UG 0 0 0 eth2
在此示例中,数据库实例的 VPC CIDR 数据块为 10.0.0.0/24。操作系统的路由表没有指向 10.0.0.0/24 的路由。相反,流向 Amazon RDS VPC CIDR 数据块的流量使用处理公共流量的主网络接口 (eth0)。
要解决连接问题,请修改路由表以使用 eth2,即 Notebook 实例的 VPC 弹性网络接口:
-
记下 SageMaker VPC 路由器地址。在此示例中,192.168.0.0/16(Notebook 实例的 VPC CIDR 数据块)被路由到 192.168.0.1。这意味着 192.168.0.1 是 VPC 路由器地址。
-
在 Notebook 实例终端的路由表中添加路由。
**注意:**在以下示例中,将 10.0.0.0/24 替换为您的 Amazon RDS 数据库实例的 VPC CIDR 数据块。将 192.168.0.1 替换为您的 SageMaker Notebook 实例的 VPC 路由器地址。sudo ip route add 10.0.0.0/24 via 192.168.0.1 dev eth2 -
确认新路由位于路由表中:
Kernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.16.0.1 0.0.0.0 UG 0 0 0 eth0 10.0.0.0 192.168.0.1 255.255.255.0 UG 0 0 0 eth2 10.0.32.0 0.0.0.0 255.255.224.0 U 0 0 0 eth1 169.254.0.0 0.0.0.0 255.255.255.0 U 0 0 0 veth\_def\_agent 169.254.169.254 0.0.0.0 255.255.255.255 UH 0 0 0 eth0 172.16.0.0 0.0.0.0 255.255.224.0 U 0 0 0 eth0 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-5a785eca34a3 192.168.0.0 0.0.0.0 255.255.128.0 U 0 0 0 eth2 192.168.0.0 192.168.0.1 255.255.0.0 UG 0 0 0 eth2 -
再次测试连接。
**注意:**对操作系统路由表的更改无法在 Notebook 实例会话之间持久保留。这种不持久性意味着每次停止和启动 SageMaker Notebook 实例时,您都会丢失所做更改。要缓解这种情况,请使用生命周期配置在每次启动 Notebook 实例时添加路由。

