尝试访问我们的本地 S3 存储时,我首先遇到了缺少证书的问题:
线程“主”com.amazonaws.SdkClientException 中的异常:无法执行 HTTP 请求:sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径
关闭证书检查:
System.setProperty(SDKGlobalConfiguration.DISABLE_CERT_CHECKING_SYSTEM_PROPERTY, "true");
我管理“连接”到服务器。但这不会产生任何结果(又名空列表),使用下面的代码。到目前为止很简单。
端点和存储桶名称都应该是正确的,因为我将它们从(工作的)S3 浏览器中剪切下来。
凭据似乎也是正确的,因为当我把它们弄乱时,我正在运行 404。再次 - 从 y S3 浏览器复制那些。
使用 S3 浏览器,我可以访问存储桶、添加文件等等。
运行List<Bucket> buckets = s3Client.listBuckets();
时它只返回一个空列表 - 没有任何例外。
控制台输出为:
2019 年 7 月 3 日 8:48:07 NACHM。com.amazonaws.http.AmazonHttpClient createSocketFactoryRegistry 警告:已明确禁用端点的 SSL 证书检查。2019 年 7 月 3 日 8:48:08 NACHM。com.amazonaws.auth.profile.internal.BasicProfileConfigLoader loadProfiles 警告:您的配置文件名称包含“配置文件”前缀。这被认为是 Java SDK 中配置文件名称的一部分,因此当您从 Java 代码中引用此配置文件时,您需要在配置文件名称中包含此前缀。2019 年 7 月 3 日 8:48:08 NACHM。com.amazonaws.auth.profile.internal.BasicProfileConfigLoader loadProfiles 警告:您的配置文件名称包含“配置文件”前缀。这被认为是 Java SDK 中配置文件名称的一部分,因此,当您从 Java 代码中引用此配置文件时,您需要在配置文件名称中包含此前缀。2019 年 7 月 3 日 8:48:23 NACHM。com.amazonaws.http.AmazonHttpClient createSocketFactoryRegistry 警告:已明确禁用端点的 SSL 证书检查。
有什么建议吗?
System.setProperty(SDKGlobalConfiguration.DISABLE_CERT_CHECKING_SYSTEM_PROPERTY, "true");
String accessKey = "myaccess";
String secretKey = "mysecret";
AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
ClientConfiguration clientConfig = new ClientConfiguration();
clientConfig.setProtocol(Protocol.HTTPS);
EndpointConfiguration endpointConfig = new EndpointConfiguration("endpoint.com", Regions.EU_CENTRAL_1.getName());
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(credentials))
//.withRegion(defaultRegion)
.withEndpointConfiguration(endpointConfig)
.build();
List<Bucket> buckets = s3Client.listBuckets();
for (Bucket bucket : buckets) {
System.out.println(
bucket.getName() +
"\t" +
StringUtils.fromDate(bucket.getCreationDate())
);
}
运行List<Bucket> buckets = s3Client.listBuckets();
时它只返回一个空列表 - 没有任何例外。
此存储桶的根目录中有(根据 S3 浏览器)2 个文件。
控制台输出为:
2019 年 7 月 3 日 8:48:07 NACHM。com.amazonaws.http.AmazonHttpClient createSocketFactoryRegistry 警告:已明确禁用端点的 SSL 证书检查。2019 年 7 月 3 日 8:48:08 NACHM。com.amazonaws.auth.profile.internal.BasicProfileConfigLoader loadProfiles 警告:您的配置文件名称包含“配置文件”前缀。这被认为是 Java SDK 中配置文件名称的一部分,因此当您从 Java 代码中引用此配置文件时,您需要在配置文件名称中包含此前缀。2019 年 7 月 3 日 8:48:08 NACHM。com.amazonaws.auth.profile.internal.BasicProfileConfigLoader loadProfiles 警告:您的配置文件名称包含“配置文件”前缀。这被认为是 Java SDK 中配置文件名称的一部分,因此,当您从 Java 代码中引用此配置文件时,您需要在配置文件名称中包含此前缀。2019 年 7 月 3 日 8:48:23 NACHM。com.amazonaws.http.AmazonHttpClient createSocketFactoryRegistry 警告:已明确禁用端点的 SSL 证书检查。
有什么建议吗?