Попытка загрузки файлов из S3 Bucket с использованием Java SDK, исключение нулевого указателя на isStandardEndpoint - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь подключиться к S3 bucket и загружать файлы, но код выдает исключение:

В моем коде у меня

ProfileCredentialsProvider pcp = new ProfileCredentialsProvider("assumed_role");
        bucketName = "dev-data-extract-service-bucket";
s3Client = AmazonS3ClientBuilder.standard().withCredentials(pcp).withRegion(Regions.US_EAST_1.toString()).build();

Я получаю исключение NullPointerException при вызове следующей строки:

fullObject = s3Client.getObject(new GetObjectRequest(bucketName, "TR09_20190205.detail"));

Причина в том, что значение хоста в конечной точке равно нулю. Это из класса AmazonS3Client

private boolean isStandardEndpoint(URI endpoint) {
        return endpoint.getHost().endsWith("s3.amazonaws.com");
}

. Далее следует трассировка стека

[main] DEBUG com.amazonaws.AmazonWebServiceClient - внутреннее ведение журнала успешно настроено для средства регистрации общего пользования: true 15: 43: 45.183 [main] DEBUG com.amazonaws.metrics.AwsSdkMetrics - администратор mbean зарегистрирован под com.amazonaws.management:type=AwsSdkMetrics 15:43: 45.952 [main] DEBUG com.amazonaws.monitoring.CsmConfigurationProviderChain - Невозможно загрузить конфигурацию из com.amazonaws.monitoring.EnvironmentVariableCsmConfigurationProvider@169e6180: Невозможно загрузить конфигурации мониторинга на стороне клиента из переменных среды!15: 43: 45.952 [main] DEBUG com.amazonaws.monitoring.CsmConfigurationProviderChain - Невозможно загрузить конфигурацию из com.amazonaws.monitoring.SystemPropertyCsmConfigurationProvider@35aea049: Невозможно загрузить конфигурации мониторинга на стороне клиента из переменных свойств системы!15: 43: 45.952 [java-sdk-http-connection-reaper] DEBUG org.apache.http.impl.conn.PoolingHttpClientConnectionManager - Закрытие подключений, которые простаивают дольше, чем 60000 МИЛЛИСЕКОНД 15: 43: 45.952 [main] DEBUG com.amazonaws.monitoring.CsmConfigurationProviderChain - Невозможно загрузить конфигурацию из com.amazonaws.monitoring.ProfileCsmConfigurationProvider@611889f4: Невозможно загрузить исключение конфигурационного файла в потоке «main» java.lang.NullPointerException в com.amazonaws.services.s3.AmazonS3tand.Alient.Alient.Client.: 3772) по адресу com.amazonaws.services.s3.AmazonS3Client.noExplicitRegionProvided (AmazonS3Client.java:3767) по адресу com.amazonaws.services.s3.AmazonS3Client.bucketRegionShouldBeCached (AmazonS3Client.java:3amas.services.comserser.AmazonS3Client.shouldPerformHeadRequestToFindRegion (AmazonS3Client.java:4501) по адресу com.amazonaws.services.s3.AmazonS3Client.invoke (AmazonS3Client.java:4426) по адресу com.amazonaws.services.s3.AmazonS3lij.jpg.amazonaws.services.s3.AmazonS3Client.getAcl (AmazonS3Client.java:3573) на com.amazonaws.services.s3.AmazonS3Client.getBucketAcl (AmazonS3Client.java:1186) на com.amazonaws.services.s3.AmazonS3Client.getBjcketAj: (1176) на com.amazonaws.services.s3.AmazonS3Client.doesBucketExistV2 (AmazonS3Client.java:1312) на .AWSHelper.downloadFromS3Bucket (AWSHelper.java:32) на .AWSHelper.main (AWSHelper.java): 59 *59: 59*

1 Ответ

0 голосов
/ 08 февраля 2019

Я думаю, что ваша проблема связана с тем, как вы устанавливаете регион.Я думаю, что регион разрешается в ноль, и это приводит к тому, что ваша конечная точка становится пустой.

Вместо:

s3Client = AmazonS3ClientBuilder.standard().withCredentials(pcp).withRegion(Regions.US_EAST_1.toString()).build();

Попробуйте:

s3Client = AmazonS3ClientBuilder.standard().withCredentials(pcp).withRegion(Regions.US_EAST_1).build();

РегионыКласс не переопределяет метод toString (), поэтому он не будет возвращать имя региона, что требуется для того, чтобы ваш код работал как есть.

...