Пример кода Java для подключения к AWS S3 с использованием конечной точки VP C - PullRequest
0 голосов
/ 06 марта 2020

Я новичок в AWS и искал образец java для подключения к AWS s3 с использованием конечной точки vp c. Я попробовал приведенный ниже фрагмент с моей локальной машины, но он не работает. Если я использую те же кредиты и вход в систему с помощью SFTP-клиента (WinSCP), я могу войти. Я хочу использовать S3 для потоковой передачи файлов из него, чтобы я мог быстрее выполнять обработку файлов в своем коде. Также этот код не будет работать в экземпляре EC2.

AWSCredentials credentials = new BasicAWSCredentials("*****", "*******");
    ClientConfiguration clientConfig = new ClientConfiguration().withRequestTimeout(50000);
    clientConfig.setUseTcpKeepAlive(true);
    AmazonS3 s3client = AmazonS3ClientBuilder
            .standard()
            .withCredentials(new AWSStaticCredentialsProvider(credentials))
            .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("vpce-************-*******.server.transfer.us-west-2.vpce.amazonaws.com", Regions.US_WEST_2.toString()))
            .withPathStyleAccessEnabled(true)
            .withClientConfiguration(clientConfig)
            .build();

Люди из моей команды просто заменяют устаревшие данные соединения sftp новой конечной точкой S3 VP C и используют устаревший код для загрузки файлов. Но я не думаю, что мы полностью используем возможности s3. Экспертная помощь будет оценена здесь.

1 Ответ

0 голосов
/ 07 марта 2020

Существует несколько проблем с информацией, представленной в вашем вопросе.

vpce-************-*******.server.transfer.us-west-2.vpce.amazonaws.com - это , а не конечная точка Amazon S3 VP C. Это конечная точка VP C для службы под названием AWS Transer для SFTP , которая предоставляет управляемый шлюз SFTP, который подключается к корзине Amazon S3.

S3 VP C Конечная точка отличается, не требует настройки клиента и не имеет специального имени хоста конечной точки - они прозрачны и используются автоматически при создании и правильной настройке в VP C. И они предоставляют интерфейс REST, а не SFTP.

В обоих случаях конечные точки VP C могут использоваться только изнутри VP C, поэтому вы не сможете получить доступ к AWS Transer для конечной точки SFTP вне EC2 в любом случае.

Но это, строго говоря, почему это не работает. Ваш код также не будет работать внутри VP C, и проблема root в том, что AmazonS3 s3client = AmazonS3ClientBuilder создает клиента S3 REST , а не SFTP клиента , Этот клиент не может использоваться с конечной точкой AWS Transfer for SFTP, либо с Inte rnet -facing, либо внутри VP C, поскольку такая конечная точка - не то, с чем AwsClientBuilder.EndpointConfiguration() предназначена для использования. Конечные точки для использования с SDK: , найденные здесь . Для us-west-2 конечная точка для подключения ipv4 - https://s3.us-west-2.amazonaws.com, а для ipv4 / ipv6 - https://s3.dualstack.us-west-2.amazonaws.com.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...