上次更新时间:2020 年 12 月 16 日
如何将 Amazon SageMaker 笔记本实例连接到位于其他 Virtual Private Cloud (VPC) 中的 Amazon Relational Database Service (Amazon RDS) 数据库实例?
解决方案1.创建 VPC 对等连接。
2.VPC 对等连接处于活动状态后,更新路由表。RDS 数据库实例子网和 SageMaker 笔记本实例子网必须有相互之间的路由。例如,对于以下 CIDR 数据块:
SageMaker VPC CIDR 数据块:192.168.0.0/16
RDS 数据库实例 VPC CIDR 数据块:10.0.0.0/24
Amazon RDS 数据库实例子网路由表如下所示:
| 目标 | 目标 |
| 10.0.0.0/24 | 本地 |
| 192.168.0.0/16 | 从下拉列表中选择 VPC 对等连接 |
SageMaker 笔记本实例子网路由表如下所示:
| 目标 | 目标 |
| 10.0.0.0/24 | 从下拉列表中选择 VPC 对等连接 |
| 192.168.0.0/16 | 本地 |
3.确认两个安全组都配置正确。要允许从笔记本实例到 RDS 数据库实例的流量:
在笔记本实例安全组上:确保存在允许流量到 RDS 数据库实例的出站规则。
在数据库实例安全组上:确保存在允许笔记本实例的安全组、VPC CIDR 数据块或子网 CIDR 数据块的入站规则。
4.要测试连接,请在 SageMaker 笔记本实例的终端中运行以下命令。替换示例中的以下值:
test.ab12cde3fg4.us-east-1.rds.amazonaws.com: 数据库实例终端节点
3306: 数据库实例端口
nc test.ab12cde3fg4.us-east-1.rds.amazonaws.com 3306 -zv
故障排除
如果笔记本实例启用了直接互联网访问,则测试命令可能会失败(例如,“连接超时”)。如果发生这种情况,请运行以下命令以在操作系统级别检查笔记本实例的路由表:
route -n
启用直接互联网访问后,路由表如下所示:
Kernel IP routing table
Destination 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 的路由。相反,到 RDS VPC CIDR 数据块的流量使用处理公共流量的主网络接口 (eth0)。要解决连接问题,请将路由表修改为使用 eth2,这是笔记本实例的 VPC 弹性网络接口:
1.请注意 SageMaker VPC 路由器地址。在此示例中,192.168.0.0/16(笔记本实例的 VPC CIDR 数据块)路由到 192.168.0.1。这意味着 192.168.0.1 是 VPC 路由器地址。
2.将路由添加到笔记本实例终端的路由表中。替换示例中的以下值:
10.0.0.0/24:RDS 数据库实例的 VPC CIDR 数据块
192.168.0.1:SageMaker 笔记本实例的 VPC 路由器地址
sudo ip route add 10.0.0.0/24 via 192.168.0.1 dev eth2
3.确认新路由在路由表中:
Kernel IP routing table
Destination 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
4.再次测试连接:
sh-4.2$ nc test.ab12cde3fg4.us-east-1.rds.amazonaws.com 3306 -zv
Connection to test.ab12cde3fg4.us-east-1.rds.amazonaws.com 3306 port succeeded!
注意:对操作系统路由表的更改不会在笔记本实例会话之间保留。这意味着当您停止并启动 SageMaker 笔记本实例时,您将丢失更改。为了缓解这种情况,请使用生命周期配置在每次启动笔记本实例时添加路由。