AWS Glue 테스트 연결이 실패하는 이유는 무엇인가요?

5분 분량
0

AWS Glue에서 테스트 연결 실패 문제를 해결하고 싶습니다.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

AWS Glue에서 테스트 연결 실패 문제를 해결하려면 네트워크 및 인증 연결을 확인하십시오.

네트워크 문제

JDBC 데이터 저장소에 대한 연결 확인

AWS Glue는 연결의 서브넷에 프라이빗 IP 주소를 사용하여 탄력적 네트워크 인터페이스를 생성합니다. Amazon Virtual Private Cloud(Amazon VPC) 외부에 저장된 데이터를 사용하려면 서브넷의 라우팅 테이블에 퍼블릭 서브넷의 NAT 게이트웨이를 포함해야 합니다. 그렇지 않으면 연결 시간이 초과됩니다.

참고: Amazon VPC 외부에 저장된 데이터는 온프레미스 데이터 저장소이거나 퍼블릭 호스트 이름을 가진 Amazon Relational Database Service(Amazon RDS) 리소스입니다.

연결의 보안 그룹과 네트워크 액세스 제어 목록(네트워크 ACL)이 VPC의 데이터에 대한 트래픽을 허용하는지 확인합니다. 그런 다음, AWS Systems Manager의 AWSSupport-TroubleshootGlueConnection 런북을 사용합니다. 자세한 내용은 JDBC 소스가 있는 AWS Glue 연결에서 발생하는 오류를 해결하려면 어떻게 해야 합니까?를 참조하십시오.

연결에 NAT 게이트웨이가 필요하거나 AWS Secrets Manager 및 AWS Security Token Service(AWS STS)에 대한 액세스가 필요한 경우 엔드포인트를 연결합니다. 자세한 내용은 데이터에 연결을 참조하십시오.

연결의 보안 그룹 확인

연결과 연결된 보안 그룹 중 하나에는 모든 TCP 포트에 열려 있는 자체 참조 인바운드 규칙이 있어야 합니다. 보안 그룹 중 하나는 모든 아웃바운드 트래픽에 대해 열려 있어야 합니다. 자체 참조 규칙을 사용하면 VPC에 대한 아웃바운드 트래픽을 제한할 수 있습니다. 자세한 내용은 AWS Glue에서 Amazon RDS 데이터 저장소로의 JDBC 연결에 대한 Amazon VPC 설정을 참조하십시오.

사용 가능한 IP 주소 수 확인

서브넷의 사용 가능한 IP 주소 수는 작업에 지정한 작업자의 수보다 많아야 합니다. 이렇게 해야 AWS Glue가 지정된 서브넷에서 네트워크 인터페이스를 생성할 수 있습니다.

서브넷이 Amazon S3에 액세스할 수 있는지 확인

Amazon Simple Storage Service(Amazon S3) 엔드포인트를 제공하거나 서브넷의 라우팅 테이블에서 NAT 게이트웨이에 대한 경로를 제공하십시오. 자세한 내용은 오류: VPC에서 subnetId에 대한 S3 엔드포인트 또는 NAT 게이트웨이를 찾을 수 없습니다를 참조하십시오.

AWS KMS VPC 엔드포인트가 있는지 확인

AWS Glue Data Catalog에 대한 연결을 암호화하려면 AWS Key Management Service(AWS KMS)에 대한 경로가 있어야 합니다. 예를 들어 해당 경로는 AWS KMS VPC 인터페이스 엔드포인트일 수 있습니다. 자세한 내용을 보려면 VPC 엔드포인트를 통해 AWS KMS에 연결을 참조하십시오.

AWS Glue 연결과 데이터베이스가 서로 다른 VPC를 사용하는지 확인

다음 조건에 해당하는 경우 테스트 연결이 시간 초과 오류와 함께 실패합니다.

  • 데이터베이스에 공개적으로 액세스할 수 없습니다.
  • VPC 피어링 없이 다른 VPC를 사용하는 연결에 AWS Glue 작업을 연결했습니다.

테스트 연결 실패를 해결하려면 전용 AWS Glue VPC를 생성하고 다른 VPC와 연결된 VPC 피어링을 설정하십시오.

온프레미스 데이터 저장소에 대한 연결 확인

Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 연결되는 온프레미스 데이터베이스에 대한 AWS Glue 연결을 확인하려면 다음 명령을 실행합니다.

$ telnet hostname port  
$ nc -zv hostname port  
$ dig hostname  
$ traceroute -AnT -p IP port

VPN과 VPC, 서브넷, 보안 그룹, 네트워크 ACL 구성을 확인하십시오. 구성이 VPC에서 온프레미스 데이터베이스로의 연결을 차단하거나 온프레미스 데이터베이스에서 방화벽 문제를 일으키지 않는지 확인하십시오. 자세한 내용은 AWS Glue를 사용하여 온프레미스 데이터 저장소에 액세스하고 분석하는 방법을 참조하십시오.

인증 문제

올바른 IAM 역할 선택

테스트 연결을 위해 선택하는 AWS Identity and Access Management(IAM) 역할에는 AWS Glue와 신뢰 관계가 있어야 합니다. AWSGlueServiceRole 정책이 연결된 서비스 연결 역할을 선택하여 신뢰 관계를 생성하십시오.

연결의 IAM 역할 확인

연결 암호가 AWS KMS로 암호화된 경우 연결의 IAM 역할이 키에 대해 kms:Decrypt 작업을 허용하는지 확인합니다. 자세한 내용은 AWS Glue에서 암호화 설정을 참조하십시오.

연결 로그 확인

로그에서 오류 메시지를 확인합니다. 테스트 연결의 로그는 /aws-glue/testconnection/output 아래의 Amazon CloudWatch Logs에서 찾을 수 있습니다.

SSL 설정 확인

데이터 저장소에 지정된 사용자에 대한 SSL 연결이 필요한 경우 콘솔에서 연결을 만들 때 SSL 연결 필요를 선택합니다. 데이터 저장소가 SSL을 지원하는 경우에만 이 옵션을 선택하십시오.

JDBC 사용자 이름 및 암호 확인

사용자에게는 Java 데이터베이스 연결(JDBC) 데이터 저장소에 액세스할 수 있는 충분한 권한이 있어야 합니다. 예를 들어 AWS Glue 크롤러에는 SELECT 권한이 필요합니다. 데이터 저장소에 쓰는 작업에는 INSERT, UPDATEDELETE 권한이 필요합니다.

JDBC URL 구문 확인

구문 요구 사항은 데이터베이스 엔진에 따라 다릅니다. 자세한 내용은 AWS Glue JDBC 연결 속성을 참조하고 JDBC URL 아래의 예제를 검토하십시오.

추가 팁

연결 유형 확인

올바른 연결 유형을 선택했는지 확인합니다. 연결 유형에 대해 Amazon RDS 또는 Amazon Redshift를 선택하면 AWS Glue가 VPC, 서브넷, 보안 그룹을 자동으로 채웁니다.

테스트 연결 기능은 MySQL 5.x 버전에서만 작동합니다. 내장된 AWS Glue JDBC 드라이버는 MySQL 버전 8을 지원하지 않습니다. 버전 5.x 이상의 MySQL 버전에 대해 연결을 테스트하는 경우 연결 시간 초과 오류가 발생할 수 있습니다. AWS Glue 연결을 사용하여 MySQL 버전 8에 연결합니다. MySQL 버전 8 이상에 호환되는 드라이버 Java Archive(JAR)를 시작하여 추출, 로드 및 변환(ETL) 작업에서 연결을 사용합니다. 그런 다음, JAR 파일을 작업에 로드합니다. 자세한 내용은 AWS Glue for Apache Spark의 ETL 연결 유형 및 옵션을 참조하십시오.

DNS가 문제의 원인이 아닌지 확인

DNS가 문제를 일으키지 않는지 확인하려면 데이터 저장소의 퍼블릭 또는 프라이빗 IP 주소를 AWS Glue 연결의 JDBC URL로 사용하십시오. 도메인 이름이 더 이상 사용되지 않으므로 SSL 연결 필요 필드를 지웁니다.

드라이버가 호환되지 않는지 확인

작업 속성에서 실패한 연결 이름과 함께 올바른 드라이버를 추가 JAR 파일로 제공합니다. 연결 이름을 작업 속성으로 지정하면 AWS Glue는 VPC 및 서브넷과 같은 연결의 네트워킹 설정을 사용합니다. 작업 속성의 JAR 파일을 사용하여 Spark DataFrame을 생성하여 기본 AWS Glue 데이터 저장소 드라이버를 재정의합니다.

DataFrame을 AWS Glue DynamicFrame으로 변환할 수도 있습니다. 자세한 내용은 fromDF를 참조하십시오.

JDBC 데이터 저장소에 공개적으로 액세스할 수 있는지 확인

MySQL 워크벤치 및 JDBC URL을 사용하여 데이터 저장소에 연결합니다. 또는 연결에 사용된 것과 동일한 서브넷 및 보안 그룹에 대한 SSH 액세스 권한이 있는 Amazon EC2 인스턴스를 시작합니다. 그런 다음, SSH를 사용하여 인스턴스에 연결하고 다음 명령을 실행하여 연결을 테스트합니다.

dig hostname$ nc -zv hostname port

관련 정보

Spark 오류 문제 해결

AWS 공식
AWS 공식업데이트됨 3달 전