我的应用程序需要连接到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
请帮助解决此问题。
答案 0 :(得分:1)
DyanamoDB与S3一样,使用VPC网关端点。启用VPC网关后,您就可以使用默认配置,因为VPC会将来自EC2实例的请求从专用IP地址路由到DynamoDB。
AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard()
.build();
注意:我对AWS Java API并不熟悉,因此我从AWS Sample代码中摘录了此内容。
这假设您的安全组和VPC路由规则正确。