【问题标题】:Access amazon Dynamodb using java from ec2 instance with private subnet使用带有私有子网的 ec2 实例中的 java 访问 amazon Dynamodb
【发布时间】:2016-10-13 06:04:09
【问题描述】:

我正在使用弹簧数据进行如下连接:

@Bean
public AmazonDynamoDB amazonDynamoDB() {

BasicAWSCredentials credentials = new BasicAWSCredentials(ACCESS_KEY, 

SECRET_KEY);

 final AmazonDynamoDBClient client = new 

AmazonDynamoDBClient(credentials);

    client.withEndpoint(END_POINT);

    //client.withRegion(Regions.AP_SOUTH_1);

    client.withRegion(Regions.US_WEST_2);
    return client;
}

但我面临的原因是:org.apache.http.conn.ConnectTimeoutException: Connect

到 dynamodb.us-west-2.amazonaws.com:443

从带有公有子网的 EC2 实例运行正常。

请建议我如何从具有私有子网的 ec2 实例访问 DynamoDB。

【问题讨论】:

    标签: java amazon-web-services spring-data amazon-dynamodb


    【解决方案1】:

    如果没有 NAT 网关或 NAT 实例,您将无法从私有子网上的实例连接到 DynamoDB 或许多其他 AWS 服务(例如 SQS 或 SNS)。

    NAT

    您可以使用 NAT 设备使私有子网中的实例能够连接到 Internet(例如,用于软件更新)或其他 AWS 服务,但阻止 Internet 发起与实例的连接。 NAT 设备将来自私有子网中实例的流量转发到 Internet 或其他 AWS 服务,然后将响应发送回实例。当流量进入 Internet 时,源 IP 地址被替换为 NAT 设备的地址,同样,当响应流量进入这些实例时,NAT 设备将地址转换回这些实例的私有 IP 地址。

    http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat.html

    另见Why do we need private subnets in VPC?

    【讨论】:

    • 我可以访问RDS服务吗?因为我可以从私有子网机器访问 RDS 服务。
    • 请提出建议。
    • 是的,@AnoopSinghal。无需 NAT 设备即可从私有实例访问 RDS,因为 RDS 实例附加了弹性网络接口,只要安全组允许,就可以从您的 VPC 内部访问这些接口。这与 DynamoDB 不同。
    • 我已将 NAT 设备与私有子网关联,但仍无法访问 dynamodb。请提出建议。
    • 您需要验证它是否配置正确。如果可以,您将可以从您的实例访问 Internet。例如,您将能够成功ping 8.8.8.8curl -v google.com。请注意,NAT 设备是您的私有子网的默认 (0.0.0.0/0) 路由的目标,但 NAT 设备本身必须位于 公共 子网中。
    猜你喜欢
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    • 1970-01-01
    • 2019-01-26
    • 2018-05-02
    • 1970-01-01
    相关资源
    最近更新 更多