Communications link failure between Glue and AWS RDS

1

I am trying to extract data from AWS RDS using AWS Glue. This RDS is using mariaDB engine and is in different account and VPC. When I am testing the Glue connection it is showing successful. Also my Glue crawler can crawl the data successfully. But when I am running a glue job with same connection, I am getting a Communications link failure error.

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

I have created a VPC with 1 public and 1 private subnet. I created a NAT Gateway in the public subnet and allocated an elastic IP to it. This elastic IP has been added to the inbound rules of the RDS security group. Then I edited route table associated with my private subnet and added destination 0.0.0.0/0 and target - Nat Gateway(created in public subnet). In my Glue Connection, I have mentioned The VPC, private subnet, and the security group.

This configuration was working well, and I have been able to extract the data from the RDS for one month.. But although test connection and crawler works Glue job fails.

3개 답변
0

I am experiencing with this same one and this is a critical issue with my production pipeline. Urgently seeking assistance for resolution.

Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)
	at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105)
	at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151)
	at com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167)
	at com.mysql.cj.protocol.a.NativeProtocol.negotiateSSLConnection(NativeProtocol.java:342)
	at com.mysql.cj.protocol.a.NativeAuthenticationProvider.connect(NativeAuthenticationProvider.java:167)
	at com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1350)
	at com.mysql.cj.NativeSession.connect(NativeSession.java:157)
	at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:953)
	at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:823)
	... 30 more
Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: protocol_version
	at sun.security.ssl.Alert.createSSLException(Alert.java:131)
	at sun.security.ssl.Alert.createSSLException(Alert.java:117)
	at sun.security.ssl.TransportContext.fatal(TransportContext.java:318)
	at sun.security.ssl.Alert$AlertConsumer.consume(Alert.java:293)
	at sun.security.ssl.TransportContext.dispatch(TransportContext.java:185)
	at sun.security.ssl.SSLTransport.decode(SSLTransport.java:152)
	at sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1401)
	at sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1309)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:440)
	at com.mysql.cj.protocol.ExportControlled.performTlsHandshake(ExportControlled.java:317)
	at com.mysql.cj.protocol.StandardSocketFactory.performTlsHandshake(StandardSocketFactory.java:188)
	at com.mysql.cj.protocol.a.NativeSocketConnection.performTlsHandshake(NativeSocketConnection.java:97)
	at com.mysql.cj.protocol.a.NativeProtocol.negotiateSSLConnection(NativeProtocol.java:333)
	... 35 more
답변함 2달 전
profile picture
전문가
검토됨 한 달 전
0

Did you find any Solution @anquachdev?

aj
답변함 2달 전
0
  • Note that Glue will only use private IP addresses from the subnet you have configured, so you will be required to make sure that these private IPs have access to the data store

So the EC2 instance you used to test the connection, make sure you were able to connect from its private IP address to the external database

  • Additionally, the security group used in the connection should have a self-referencing rule to allow connectivity between the Glue workers

https://repost.aws/questions/QUQxpEKTr8Sde7wRupmXT8iA/aws-glue-an-error-occurred-while-calling-o95-getdynamicframe-communications-link-failure#ANCh2bbMexSWiInPZs_kJDhg

답변함 9일 전

로그인하지 않았습니다. 로그인해야 답변을 게시할 수 있습니다.

좋은 답변은 질문에 명확하게 답하고 건설적인 피드백을 제공하며 질문자의 전문적인 성장을 장려합니다.

질문 답변하기에 대한 가이드라인