Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试使用Java SDK从S3 Bucket下载文件,isStandardEndpoint上出现空指针异常_Java_Amazon S3_Endpoint - Fatal编程技术网

尝试使用Java SDK从S3 Bucket下载文件,isStandardEndpoint上出现空指针异常

尝试使用Java SDK从S3 Bucket下载文件,isStandardEndpoint上出现空指针异常,java,amazon-s3,endpoint,Java,Amazon S3,Endpoint,我试图连接到S3 bucket并下载文件,但代码引发异常: 在我的代码中,我有 ProfileCredentialsProvider pcp = new ProfileCredentialsProvider("assumed_role"); bucketName = "dev-data-extract-service-bucket"; s3Client = AmazonS3ClientBuilder.standard().withCredentials(pcp).withRegi

我试图连接到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"));
原因是端点中的主机值为null 这是来自AmazonS3Client类

private boolean isStandardEndpoint(URI endpoint) {
        return endpoint.getHost().endsWith("s3.amazonaws.com");
}
下面是堆栈跟踪

[main]调试com.amazonaws.AmazonWebServiceClient-内部日志记录 已成功配置为commons logger:true 15:43:45.183[主] 调试com.amazonaws.metrics.AwsSdkMetrics-管理mbean已注册 在com.amazonaws.management下:type=AwsSdkMetrics 15:43:45.952[main] 调试com.amazonaws.monitoring.CsmConfigurationProviderChain-无法 从中加载配置 com.amazonaws.monitoring。EnvironmentVariableCsmConfigurationProvider@169e6180: 无法从环境加载客户端监视配置 变量!15:43:45.952[主]调试 com.amazonaws.monitoring.CsmConfigurationProviderChain-无法 从加载配置 com.amazonaws.monitoring。SystemPropertyCsmConfigurationProvider@35aea049: 无法从系统加载客户端监视配置 属性变量!15:43:45.952[java sdk http连接收割机] 调试org.apache.http.impl.conn.poolighttpclientconnectionmanager- 关闭空闲连接超过60000毫秒15:43:45.952 [main]调试com.amazonaws.monitoring.CsmConfigurationProviderChain- 无法从加载配置 com.amazonaws.monitoring。ProfileCsmConfigurationProvider@611889f4: 无法加载线程“main”中的配置文件异常 位于的java.lang.NullPointerException amazonaws.services.s3.AmazonS3Client.isStandardEndpoint(AmazonS3Client.java:3772) 在 amazonaws.services.s3.AmazonS3Client.noExplicitRegionProvided(AmazonS3Client.java:3767) 在 应访问com.amazonaws.services.s3.AmazonS3Client.bucketRegions(AmazonS3Client.java:4505) 在 com.amazonaws.services.s3.AmazonS3Client.shouldPerformanceHeadRequestToFindRegion(AmazonS3Client.java:4501) 在 amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4426) 在 amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4390) 在 amazonaws.services.s3.AmazonS3Client.getAcl(AmazonS3Client.java:3573) 在 com.amazonaws.services.s3.AmazonS3Client.getBucketAcl(AmazonS3Client.java:1186) 在 com.amazonaws.services.s3.AmazonS3Client.getBucketAcl(AmazonS3Client.java:1176) 在 amazonaws.services.s3.AmazonS3Client.doesBucketExistV2(AmazonS3Client.java:1312) at.AWSHelper.downloadFromS3Bucket(AWSHelper.java:32)at .AWSHelper.main(AWSHelper.java:59)


我认为你的问题源于你对该地区的定位方式。我认为该区域正在解析为null,这导致端点为null

而不是:

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


Regions类不重写toString()方法,因此它不会返回区域名称,这是代码正常工作所必需的。

Hi Nader。欢迎来到堆栈溢出。感谢您抽出时间提出一个书面清晰的问题。您好。非常感谢@redbirdo的及时回复和大力帮助,您完全正确。你的解决方案解决了这个问题,非常感谢你的帮助。但我很惊讶为什么AmazonSDK不处理这个问题,并抛出一个带有正确错误消息的异常。它只是抛出空指针异常
s3Client = AmazonS3ClientBuilder.standard().withCredentials(pcp).withRegion(Regions.US_EAST_1).build();