Caused by: org.apache.http.conn.ConnectTimeoutException: Connect to dynamodb.ap-south-1.amazonaws.com:443

0

I have a running MSK connector which talks with a Kafka running on ec2-instance in a created VPN with public subnets. when the dynamo connector is trying to access the dynamodb table getting the below error:

[Worker-02698e88eb6557581] com.amazonaws.SdkClientException: Unable to execute HTTP request: Connect to dynamodb.ap-south-1.amazonaws.com:443 [dynamodb.ap-south-1.amazonaws.com/52.94.20.64] failed: connect timed out
[Worker-02698e88eb6557581] 	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleRetryableException(AmazonHttpClient.java:1207)
[Worker-02698e88eb6557581] 	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1153)
[Worker-02698e88eb6557581] 	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:802)
[Worker-02698e88eb6557581] 	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:770)
[Worker-02698e88eb6557581] 	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:744)
[Worker-02698e88eb6557581] 	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:704)
[Worker-02698e88eb6557581] 	at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:686)
[Worker-02698e88eb6557581] 	at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:550)
[Worker-02698e88eb6557581] 	at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:530)
[Worker-02698e88eb6557581] 	at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.doInvoke(AmazonDynamoDBClient.java:6214)
[Worker-02698e88eb6557581] 	at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.invoke(AmazonDynamoDBClient.java:6181)
[Worker-02698e88eb6557581] 	at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.executeDescribeTable(AmazonDynamoDBClient.java:2247)
[Worker-02698e88eb6557581] 	at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.describeTable(AmazonDynamoDBClient.java:2211)
[Worker-02698e88eb6557581] 	at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.describeTable(AmazonDynamoDBClient.java:2259)
[Worker-02698e88eb6557581] 	at com.trustpilot.connector.dynamodb.aws.ConfigTablesProvider.getConsumableTables(ConfigTablesProvider.java:28)
[Worker-02698e88eb6557581] 	at com.trustpilot.connector.dynamodb.DynamoDBSourceConnector.taskConfigs(DynamoDBSourceConnector.java:120)
[Worker-02698e88eb6557581] 	at org.apache.kafka.connect.runtime.Worker.connectorTaskConfigs(Worker.java:359)
[Worker-02698e88eb6557581] 	at org.apache.kafka.connect.runtime.distributed.DistributedHerder.reconfigureConnector(DistributedHerder.java:1469)
[Worker-02698e88eb6557581] 	at org.apache.kafka.connect.runtime.distributed.DistributedHerder.reconfigureConnectorTasksWithRetry(DistributedHerder.java:1407)
[Worker-02698e88eb6557581] 	at org.apache.kafka.connect.runtime.distributed.DistributedHerder.access$1000(DistributedHerder.java:130)
[Worker-02698e88eb6557581] 	at org.apache.kafka.connect.runtime.distributed.DistributedHerder$12.call(DistributedHerder.java:1359)
[Worker-02698e88eb6557581] 	at org.apache.kafka.connect.runtime.distributed.DistributedHerder$12.call(DistributedHerder.java:1353)
[Worker-02698e88eb6557581] 	at org.apache.kafka.connect.runtime.distributed.DistributedHerder.tick(DistributedHerder.java:399)
[Worker-02698e88eb6557581] 	at org.apache.kafka.connect.runtime.distributed.DistributedHerder.run(DistributedHerder.java:317)
[Worker-02698e88eb6557581] 	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
[Worker-02698e88eb6557581] 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[Worker-02698e88eb6557581] 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[Worker-02698e88eb6557581] 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[Worker-02698e88eb6557581] 	at java.base/java.lang.Thread.run(Thread.java:829)
[Worker-02698e88eb6557581] Caused by: org.apache.http.conn.ConnectTimeoutException: Connect to dynamodb.ap-south-1.amazonaws.com:443 [dynamodb.ap-south-1.amazonaws.com/52.94.20.64] failed: connect timed out
[Worker-02698e88eb6557581] 	at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:151)
[Worker-02698e88eb6557581] 	at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376)
[Worker-02698e88eb6557581] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[Worker-02698e88eb6557581] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[Worker-02698e88eb6557581] 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[Worker-02698e88eb6557581] 	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[Worker-02698e88eb6557581] 	at com.amazonaws.http.conn.ClientConnectionManagerFactory$Handler.invoke(ClientConnectionManagerFactory.java:76)
[Worker-02698e88eb6557581] 	at com.amazonaws.http.conn.$Proxy42.connect(Unknown Source)
[Worker-02698e88eb6557581] 	at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393)
[Worker-02698e88eb6557581] 	at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
[Worker-02698e88eb6557581] 	at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
[Worker-02698e88eb6557581] 	at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
[Worker-02698e88eb6557581] 	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
[Worker-02698e88eb6557581] 	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)
[Worker-02698e88eb6557581] 	at com.amazonaws.http.apache.client.impl.SdkHttpClient.execute(SdkHttpClient.java:72)
[Worker-02698e88eb6557581] 	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1331)
[Worker-02698e88eb6557581] 	at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1145)
[Worker-02698e88eb6557581] 	... 27 more
[Worker-02698e88eb6557581] Caused by: java.net.SocketTimeoutException: connect timed out
[Worker-02698e88eb6557581] 	at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
[Worker-02698e88eb6557581] 	at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:412)
[Worker-02698e88eb6557581] 	at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:255)
[Worker-02698e88eb6557581] 	at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:237)
[Worker-02698e88eb6557581] 	at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
[Worker-02698e88eb6557581] 	at java.base/java.net.Socket.connect(Socket.java:609)
[Worker-02698e88eb6557581] 	at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:368)
[Worker-02698e88eb6557581] 	at com.amazonaws.http.conn.ssl.SdkTLSSocketFactory.connectSocket(SdkTLSSocketFactory.java:142)
[Worker-02698e88eb6557581] 	at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
[Worker-02698e88eb6557581] 	... 43 more

I believe the MSK connector be running in the same VPC, I tried pinging google in the ec2 hosted in the subnet, pinging works.

  • ping is not a valid test as it uses ICMP. Make sure you can connect to the internet on port 443.

2 Respuestas
0

Yes both the subnets are public, I initially followed the docs and tried with a public subnet and a private subnet along with NAT. It showed same issue.

profile picture
Ritik
respondido hace 8 meses
-1

ok, I wrote a small java code making api call,

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class TodoClient {
    public static void main(String[] args) {
        sampleCall();
    }

    public static void sampleCall() {
        try {
            URL url = new URL("https://jsonplaceholder.typicode.com/todos/1");

            HttpURLConnection connection = (HttpURLConnection) url.openConnection();

            connection.setRequestMethod("GET");

            int responseCode = connection.getResponseCode();
            System.out.println("Response Code: " + responseCode);

            if (responseCode == HttpURLConnection.HTTP_OK) {
                BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                String line;
                StringBuilder response = new StringBuilder();

                while ((line = reader.readLine()) != null) {
                    response.append(line);
                }
                reader.close();

                System.out.println("Response Data:");
                System.out.println(response.toString());
            } else {
                System.out.println("Failed to fetch data. Response code: " + responseCode);
            }

            // Close the connection
            connection.disconnect();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

executed on all the machines, the code was giving correct ouput, when similar code was running in an msk connector, it threw me Connection Timeout error.

profile picture
Ritik
respondido hace 8 meses

No has iniciado sesión. Iniciar sesión para publicar una respuesta.

Una buena respuesta responde claramente a la pregunta, proporciona comentarios constructivos y fomenta el crecimiento profesional en la persona que hace la pregunta.

Pautas para responder preguntas