¿Cuál es la forma de obtener un objeto S3 utilizando el punto de enlace de la VPC para S3 en JAVA? ¿Debo usar un cliente http simple? ¿O hay alguna manera de hacer esto usando AmazonS3ClientBuilder?
No hace nada diferente cuando usa un punto de enlace de la VPC de S3 después de configurarlo. Nada en su código cambia.
Cuando una subred en una VPC está asociada con una tabla de ruteo que está configurada para un punto de enlace de la VPC, solo sucede una cosa:
Eso es todo.
La lista de prefijos pl-xxxxxxxx en su tabla de rutas representa una lista de todas las subredes públicas asociadas con S3 en su región. La infraestructura de AWS mantiene automáticamente la lista. Cuando una instancia envía tráfico a S3, realiza una búsqueda de DNS para encontrar una dirección IP para el depósito. Cuando se conecta a esa dirección IP, si la tabla de rutas de la subred de la instancia incluye una entrada para esa lista de prefijos mediante el punto de enlace de la VPC para S3, se conecta a S3 a través del punto de enlace.
Todas las instancias en subredes asociadas con las tablas de rutas especificadas usan automáticamente el punto final para acceder al servicio; las subredes que no están asociadas con las tablas de rutas especificadas no usan el punto final para acceder al servicio.
http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-endpoints.html#vpc-endpoints-routing
AmazonS3ClientBuilder se puede utilizar para crear un cliente que pueda conectarse a un punto final específico. ¡No hay necesidad de escribir su propio cliente de bajo nivel!
Aquí hay un ejemplo:
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();