amazon-web-services - 尝试在没有代理的情况下连接 Dynamo DB 时发生连接超时错误
问题描述
我的应用程序需要连接到 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
请帮助解决这个问题。
解决方案
DyanamoDB 与 S3 一样,使用 VPC 网关终端节点。启用 VPC 网关后,您可以只使用默认配置,因为 VPC 会处理将来自 EC2 实例的请求从私有 IP 地址路由到 DynamoDB。
AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard()
.build();
注意:我不熟悉 AWS Java API,所以我从 AWS 示例代码中获取了上面的内容。
这假设您的安全组和 VPC 路由规则是正确的。
推荐阅读
- python - 小部件上的 PyQt 标签定位
- r - 使用ggplot2的径向图
- java - 将 10 个项目下载到下一个 10 个项目从输入流到列表视图 - android
- php - 从 SQL 获取数据
- google-chrome - 如何定义链接 HTTP 标头预加载的文件字符集?
- sass - 在 SCSS 变量中使用 CSS 自定义属性
- angular - Angular 组件默认样式 css 显示块
- css - CSS工具提示背景颜色隐藏
- git - 如何在 git repo 中维护 cscope 数据库
- asp.net-core - 如何为 .NET Core 的 Application Insights 设置 cloud_roleName?