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回答
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
回答済み 8ヶ月前
-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
回答済み 8ヶ月前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

質問に答えるためのガイドライン

関連するコンテンツ