尝试在没有代理的情况下连接Dynamo DB时发生连接超时错误

时间:2020-01-31 05:00:44

标签: amazon-web-services spring-boot amazon-dynamodb

我的应用程序需要连接到DynamoDB,实际上我的网络在代理后面运行。尝试使用以下配置与代理连接DynamoDB时,它工作正常。

#DynamoDB configuration
amazon.dynamodb.endpoint=https://dynamodb.REGIONXXXX.amazonaws.com
amazon.dynamodb.region=XXXXXXXXX
spring.data.dynamodb.entity2ddl.auto=create-only
proxy.server.address=XXXXXXXXX
proxy.server.port=31XXXXX

DynamoDB配置:

@Bean
public AmazonDynamoDB amazonDynamoDB() {
    return AmazonDynamoDBClientBuilder
            .standard()
            .withClientConfiguration(
                    PredefinedClientConfigurations.defaultConfig()
                            .withProxyHost(proxy)//we want to remove this code.
                            .withProxyPort(port))
            .withEndpointConfiguration(
                    new AwsClientBuilder
                            .EndpointConfiguration(amazonDynamoDBEndpoint, amazonDynamoDBRegion))
            .build();
}

要求是使用 VPC 端点将其连接,以便我们相信我们可以在没有任何代理的情况下进行连接。 相同所需的全部配置是什么?是否需要对代码进行任何更改,而不是删除代理?

我们已使用以下策略配置VPC端点:

{
"Statement": [
    {
        "Action": "*",
        "Effect": "Allow",
        "Resource": "*",
        "Principal": "*"
    }
]

}

但是尝试使用上面提到的相同代码(没有代理)连接DynamoDB会导致以下错误:

com.amazonaws.SdkClientException: Unable to execute HTTP request: Connect to dynamodb.XXXXXX-1.amazonaws.com:443 [dynamodb.XXXXXXX.amazonaws.com/XX.1XX.226.XXX] failed: connect timed out

请帮助解决此问题。

1 个答案:

答案 0 :(得分:1)

DyanamoDB与S3一样,使用VPC网关端点。启用VPC网关后,您就可以使用默认配置,因为VPC会将来自EC2实例的请求从专用IP地址路由到DynamoDB。

AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard()
.build();

注意:我对AWS Java API并不熟悉,因此我从AWS Sample代码中摘录了此内容。

这假设您的安全组和VPC路由规则正确。