如何在Java中使用S3 VPC端点?

时间:2017-03-16 05:58:07

标签: amazon-web-services amazon-s3

在JAVA中使用S3的VPC端点获取S3对象的方法是什么?我要用一个简单的http客户端吗?或者有没有办法使用AmazonS3ClientBuilder?

2 个答案:

答案 0 :(得分:0)

AmazonS3ClientBuilder可用于构建可连接到特定端点的客户端。没有必要编写自己的低级客户端!

以下是一个例子:

BasicAWSCredentials myCredentials = new BasicAWSCredentials("access_key", "secret_key");
AWSCredentialsProvider myCredentialsProvider = new StaticAWSCredentialsProvider(myCredentials);
String myEndpoint = ".."; // set your endpoint here
String myRegion = "..";   // set your region (ie. us-east-1, or us-east-1 etc.)

AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
            .withCredentials(myCredentialProvider)
            .withEndpoint(myEndpoint)
            .withRegion(myRegion)
            .build();

答案 1 :(得分:0)

配置后,如果使用S3 VPC端点,则不会以任何方式执行任何。代码中没有任何内容发生变化。

当VPC中的子网与为VPC端点配置的路由表相关联时,只会发生一件事:

  • 您所在地区的S3的所有公共IP地址都将路由到VPC端点,而不是遵循默认路由。

那就是它。

路由表中的前缀列表 pl-xxxxxxxx表示您所在地区与S3关联的所有公共子网的列表。该列表由AWS基础架构自动维护。当实例将流量发送到S3时,它会执行DNS查找以查找存储桶的IP地址。当它连接到该IP地址时,如果实例子网的路由表包含使用S3的VPC端点的该前缀列表的条目,则它通过端点连接到S3。

  

与指定路由表关联的子网中的所有实例都自动使用端点来访问服务;与指定路由表无关的子网不使用端点来访问服务。

     

http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-endpoints.html#vpc-endpoints-routing