【发布时间】:2021-05-05 02:07:57
【问题描述】:
AWS Java SDK 2.15.73(当前最新版本)。 Java 1.8.222 操作系统 IBM AIX 7.1
开发将文件上传到 S3 存储桶的应用程序。
在 Maven pom 文件中:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>bom</artifactId>
<version>2.15.73</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>s3</artifactId>
</dependency>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>apache-client</artifactId>
<version>2.0.0-preview-10</version>
</dependency>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>http-client-spi</artifactId>
<version>2.0.0-preview-10</version>
</dependency>
</dependencies>
Stacktrace 的开始:
sendFileToAWSNoAuth 中的异常=无法将请求编组到 JSON:baseUri 不能为空。 software.amazon.awssdk.core.exception.SdkClientException:无法将请求编组到 JSON:baseUri 不能为空。 在 software.amazon.awssdk.core.exception.SdkClientException$BuilderImpl.build(SdkClientException.java:98) 在 software.amazon.awssdk.services.s3.transform.PutObjectRequestMarshaller.marshall(PutObjectRequestMarshaller.java:53) 在 software.amazon.awssdk.services.s3.transform.PutObjectRequestMarshaller.marshall(PutObjectRequestMarshaller.java:31) 在 software.amazon.awssdk.core.runtime.transform.StreamingRequestMarshaller.marshall(StreamingRequestMarshaller.java:48)
Java 代码:
需要身份验证并通过代理服务器执行。
字符串 endPointURL = appParms.getProxyServer() + ":" + appParms.getProxyServerPort();
URI endPointUri = 新的 URI(endPointURL);
ProxyConfiguration proxyConfig = ProxyConfiguration.builder() .endpoint(endPointUri) .build();
SdkHttpClient httpClient = ApacheSdkHttpClientFactory.builder() .proxyConfiguration(proxyConfig) 。建造() .createHttpClient();
ProfileCredentialsProvider credentialsProfile = ProfileCredentialsProvider.builder().profileName(appParms.getProfileName()).build();
区域区域 = Region.EU_CENTRAL_1; S3Client s3NonEncryption = S3Client.builder() .credentialsProvider(credentialsProfile) .region(地区) .endpointOverride(endPointUri) .httpClient(httpClient) .build();
String folderKey = appParms.getBucketFolder() + "/" + appParms.getFileName();
文件 aFile = new File(appParms.getFilePath() + "/" + appParms.getFileName());
PutObjectRequest putOb = PutObjectRequest.builder() .bucket(appParms.getBucketNameSSE()) .key(文件夹键) .build();
PutObjectResponse 响应 = s3NonEncryption.putObject(putOb, aFile.toPath());
最后一行发生异常 (s3NonEncryption.putObject)
【问题讨论】:
标签: amazon-s3