다른 VPC에 있는 Amazon SageMaker 노트북 인스턴스에서 Amazon RDS DB 인스턴스에 연결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 12월 16일

Amazon SageMaker 노트북 인스턴스를 다른 Virtual Private Cloud(VPC)에 있는 Amazon Relational Database Service(RDS) DB 인스턴스에 연결하려면 어떻게 해야 합니까?

해결 방법

1.    VPC 피어링 연결을 생성합니다.

2.    VPC 피어링 연결이 활성화되면 라우팅 테이블을 업데이트합니다. RDS DB 인스턴스 서브넷과 SageMaker 노트북 인스턴스 서브넷에는 서로 연결되는 경로가 있어야 합니다. 예를 들어, 다음 CIDR 블록의 경우:

SageMaker VPC CIDR 블록: 192.168.0.0/16

RDS DB 인스턴스 VPC CIDR 블록: 10.0.0.0/24

Amazon RDS DB 인스턴스 서브넷 라우팅 테이블은 다음과 같습니다.

대상 타겟
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 DB 인스턴스로의 트래픽을 허용하려면 다음과 같이 하세요.

노트북 인스턴스 보안 그룹: RDS DB 인스턴스에 대한 트래픽을 허용하는 아웃바운드 규칙이 있는지 확인합니다.

DB 인스턴스 보안 그룹: 노트북 인스턴스의 보안 그룹, VPC CIDR 블록 또는 서브넷 CIDR 블록을 허용하는 인바운드 규칙이 있는지 확인합니다.

4.    연결을 테스트하려면 SageMaker 노트북 인스턴스의 터미널에서 다음 명령을 실행합니다. 예제에서 다음 값을 대체합니다.

DB 인스턴스 엔드포인트에서 test.ab12cde3fg4.us-east-1.rds.amazonaws.com:

3306: DB 인스턴스 포트

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

이 예에서 DB 인스턴스의 VPC CIDR 블록은 10.0.0.0/24입니다. 운영 체제의 라우팅 테이블에 10.0.0.0/24에 대한 경로가 없습니다. 대신 RDS VPC CIDR 블록에 대한 트래픽은 퍼블릭 트래픽을 처리하는 기본 네트워크 인터페이스(eth0)를 사용합니다. 연결 문제를 해결하려면 노트북 인스턴스의 VPC 탄력적 네트워크 인터페이스인 eth2를 사용하도록 라우팅 테이블을 수정합니다.

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 DB 인스턴스의 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 [tcp/mysql] succeeded!

참고: 운영 체제 라우팅 테이블에 대한 변경 사항은 노트북 인스턴스 세션 간에 지속되지 않습니다. 즉, SageMaker 노트북 인스턴스를 중지했다가 시작할 때 변경 사항이 유실됩니다. 이를 해결하려면 수명 주기 구성을 사용하여 노트북 인스턴스를 시작할 때마다 경로를 추가합니다.