Amazon SageMaker 노트북 인스턴스를 다른 가상 프라이빗 클라우드(VPC)에 있는 Amazon Relational Database Service(Amazon RDS) DB 인스턴스에 연결하려고 합니다.
해결 방법
SageMaker 노트북 인스턴스를 다른 VPC에 있는 Amazon RDS DB 인스턴스에 연결하려면 다음 단계를 완료하십시오.
-
VPC 피어링 연결을 만들거나 삭제합니다.
-
VPC 피어링 연결이 활성화되면 라우팅 테이블을 업데이트합니다. Amazon RDS DB 인스턴스 서브넷과 SageMaker 노트북 인스턴스 서브넷에는 서로 연결되는 경로가 있어야 합니다.
다음 CIDR 블록을 예로 들어보겠습니다.
SageMaker VPC CIDR 블록: 192.168.0.0/16
Amazon 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 | 로컬 |
-
노트북 인스턴스에서 Amazon RDS DB 인스턴스로 향하는 트래픽을 허용하려면 두 보안 그룹이 모두 올바르게 구성되어 있는지 확인합니다.
노트북 인스턴스 보안 그룹에서 Amazon RDS DB 인스턴스로 향하는 트래픽을 허용하는 아웃바운드 규칙이 있는지 확인합니다.
DB 인스턴스 보안 그룹에서 노트북 인스턴스의 보안 그룹, VPC CIDR 블록 또는 서브넷 CIDR 블록을 허용하는 인바운드 규칙이 있는지 확인합니다.
-
연결을 테스트하려면 SageMaker 노트북 인스턴스의 터미널에서 다음 명령을 실행합니다.
참고: 예제의 mydatabase.c5y9vfc8igjj.ap-southeast-2.rds.amazonaws.com을 DB 인스턴스 엔드포인트로 바꿉니다. 3306을 DB 인스턴스 포트로 바꿉니다.
curl -v mydatabase.c5y9vfc8igjj.ap-southeast-2.rds.amazonaws.com:3306
문제 해결
노트북 인스턴스에 직접 인터넷 액세스가 활성화된 경우 Connection timed out 오류로 테스트 명령이 실패합니다. 이 오류가 발생하면 다음 명령을 실행하여 운영 체제 수준에서 노트북 인스턴스의 라우팅 테이블을 확인합니다.
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
이 예제에서 DB 인스턴스의 VPC CIDR 블록은 10.0.0.0/24입니다. 운영 체제의 라우팅 테이블에는 10.0.0.0/24에 대한 경로가 없습니다. 대신 Amazon RDS VPC CIDR 블록으로 향하는 트래픽은 퍼블릭 트래픽을 처리하는 기본 네트워크 인터페이스(eth0)를 사용합니다.
연결 문제를 해결하려면 노트북 인스턴스의 VPC 탄력적 네트워크 인터페이스인 eth2를 사용하도록 라우팅 테이블을 수정하십시오.
-
SageMaker VPC 라우터 주소를 기록해 둡니다. 이 예에서 192.168.0.0/16(노트북 인스턴스의 VPC CIDR 블록)은 192.168.0.1로 라우팅됩니다. 즉, 192.168.0.1이 VPC 라우터 주소입니다.
-
노트북 인스턴스 터미널의 라우팅 테이블에 경로를 추가합니다.
참고: 다음 예에서 10.0.0.0/24를 Amazon 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
-
새 경로가 라우팅 테이블에 있는지 확인합니다.
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
-
연결을 다시 테스트합니다.
참고: 운영 체제 라우팅 테이블에 대한 변경 사항은 노트북 인스턴스 세션 간에 지속되지 않습니다. 이렇게 지속성이 부족하면 SageMaker 노트북 인스턴스를 중지하고 시작할 때마다 변경 사항이 손실됩니다. 이 상황을 완화하려면 수명 주기 구성을 사용하여 노트북 인스턴스를 시작할 때마다 경로를 추가하십시오.
관련 정보
VPC의 노트북 인스턴스를 외부 리소스에 연결
VPC 내의 SageMaker에 연결