Amazon RDS 데이터베이스를 Amazon EC2 인스턴스의 Amazon ECS 작업에 연결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 5월 14일

애플리케이션이 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 Amazon Elastic Container Service(Amazon ECS)가 시작한 일련의 작업으로 실행 중입니다. 애플리케이션이 Amazon Relational Database Service(Amazon RDS) 데이터베이스와 통신할 수 없습니다.

​해결 방법

네트워크 구성 확인

컨테이너 인스턴스가 데이터베이스에 대한 연결을 설정할 수 있는지 확인하려면, Linux 기반 또는 Windows 기반 컨테이너 인스턴스에 대해 다음 단계를 완료하십시오.

Linux 기반 컨테이너 인스턴스:

1.    SSH를 사용하여 작업이 배치되는 컨테이너 인스턴스에 연결

2.    RDS 데이터베이스에 연결하려면 다음 명령을 실행합니다.

 $ telnet test.ab12cde3fg4.us-east-1.rds.amazonaws.com 3306

참고: test.ab12cde3fg4.us-east-1.rds.amazonaws.com을 데이터베이스 엔드포인트로 바꿉니다. 3306을 데이터베이스 포트로 바꿉니다.

출력은 다음과 유사합니다.

> Trying 172.31.122.28
 > Connected to test.ab12cde3fg4.us-east-1.rds.amazonaws.com
 > Escape character is '^]'.

중요: Telnet은 Amazon ECS 최적화 Amazon Machine Image(AMI)에 사전 설치되어 있지 않습니다. Telnet을 설치하려면 sudo yum install -y 명령을 실행합니다.

Windows 기반 컨테이너 인스턴스:

1.    RDP(원격 데스크톱 프로토콜)를 사용하여 작업이 배치된 컨테이너 인스턴스에 연결합니다.

2.    RDS 데이터베이스에 연결하려면 Windows 명령 프롬프트 또는 Windows PowerShell을 사용하여 다음 명령을 실행합니다.

$ telnet test.ab12cde3fg4.us-east-1.rds.amazonaws.com 3306

참고: test.ab12cde3fg4.us-east-1.rds.amazonaws.com을 데이터베이스 엔드포인트로 바꿉니다. 3306을 데이터베이스 포트로 바꿉니다.

중요: Telnet은 Amazon ECS 최적화 Windows AMI에 사전 설치되어 있지 않습니다. Telnet을 설치하려면 관리자로서 PowerShell을 사용하여 Install-WindowsFeature -Name Telnet-Client 명령을 실행합니다.

연결이 설정된 경우 빈 페이지가 나타납니다.

연결을 설정할 수 없고 "Connection Timed Out" 또는 “Connect failed” 오류를 수신할 경우, 다음 단계를 완료하십시오.

1.    연결된 보안 그룹이 DescribeInstances API 호출을 사용하여 RDS 데이터베이스에 액세스를 허용하는지 또는Amazon EC2 콘솔의 선택한 인스턴스 ID에 대한 Description 탭을 선택하여 RDS 데이터베이스에 액세스를 허용하는지 확인합니다.

참고: 브리지호스트 네트워킹 모드에서 컨테이너 인스턴스에 연결된 보안 그룹은 데이터베이스에 대한 액세스를 제어합니다. awsvpc 네트워크 모드에서 서비스 또는 작업 시작 중에 연결된 보안 그룹은 액세스를 제어합니다. Amazon ECS 작업은 네트워크 모드와 상관없이 컨테이너 인스턴스에 속한 서브넷을 공유합니다.

팁: 모범 사례로서, 데이터베이스 포트의 수신 트래픽을 허용하는 보안 그룹을 생성합니다. 그런 다음, 보안 그룹을 데이터베이스 및 컨테이너 인스턴스에 연결하거나 보안 그룹을 awsvpc를 기준으로 한 작업에 연결합니다.

2.    네트워크 ACL(네트워크 액세스 제어 목록) 및 서브넷에 연결된 라우팅 테이블이 데이터베이스에 대한 액세스를 허용하는지 확인합니다.

데이터베이스 연결 파라미터 확인

1.    컨테이너 정의의 환경 섹션에서, 환경 변수를 일반 텍스트로서 전달하거나 AWS Systems Manager Parameter Store 또는 AWS Secrets Manager에서 환경 변수를 참조합니다.

참고: 애플리케이션은 파라미터(예: 데이터베이스 엔드포인트, 데이터베이스 포트 및 데이터베이스 액세스 자격 증명)를 사용하여 데이터베이스에 연결합니다. 이러한 파라미터는 일반적으로 환경 변수를 작업에 전달합니다.

2.    작업의 컨테이너가 데이터베이스와 연결이 설정되었지만 잘못된 연결 파라미터(예: 데이터베이스 사용자 이름 또는 데이터베이스 암호)로 인해 인증할 수 없는 경우, 데이터베이스 암호를 재설정합니다.

3.    선행 또는 후행 문자 공백을 연결 파라미터에서 제거합니다.

참고: 구문 오류가 컨테이너와 RDS 데이터베이스 간의 연결 실패를 초래합니다.


이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?