如何解决’使用构建器创建客户端是不可变的’?

我正在创建一个想要将文件上传到S3存储桶的应用程序。 我从以下代码段收到错误:

BasicAWSCredentials awsCreds = new BasicAWSCredentials("", ""); AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withRegion("") .withCredentials(new AWSStaticCredentialsProvider(awsCreds)) .build(); PutObjectRequest request = new PutObjectRequest("testbucketupdate", "testFile", new File("D:\\Attachments\\LICENSE")); ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentType("plain/text"); metadata.addUserMetadata("x-amz-meta-title", "someTitle"); request.setMetadata(metadata); s3Client.setS3ClientOptions(S3ClientOptions.builder().setPathStyleAccess(true).disableChunkedEncoding().build()); s3Client.putObject(request); 

我收到以下错误:

 Java.lang.UnsupportedOperationException: Client is immutable when created with the builder. at com.amazonaws.AmazonWebServiceClient.checkMutability(AmazonWebServiceClient.java:937) at com.amazonaws.services.s3.AmazonS3Client.setS3ClientOptions(AmazonS3Client.java:716) at com.amazonaws.lambda.demo.LambdaFunctionHandler.check(LambdaFunctionHandler.java:123) at com.amazonaws.lambda.demo.LambdaFunctionHandler.main(LambdaFunctionHandler.java:208) at com.amazonaws.lambda.demo.LambdaFunctionHandler.handleRequest(LambdaFunctionHandler.java:51) at com.amazonaws.lambda.demo.LambdaFunctionHandler.handleRequest(LambdaFunctionHandler.java:1) at lambdainternal.EventHandlerLoader$PojoHandlerAsStreamHandler.handleRequest(EventHandlerLoader.java:178) at lambdainternal.EventHandlerLoader$2.call(EventHandlerLoader.java:888) at lambdainternal.AWSLambda.startRuntime(AWSLambda.java:283) at lambdainternal.AWSLambda.(AWSLambda.java:64) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:348) at lambdainternal.LambdaRTEntry.main(LambdaRTEntry.java:94) 

将文件成功上传到所需存储桶应该做哪些更改?

显然错误说如果你使用AmazonS3ClientBuilder构建一个客户端,它将是不可变的,你不能在它构建后修改它。

解决方案是删除以后的s3Client.setS3ClientOptions(...)并使用AmazonS3ClientBuilder构建器设置所需的选项。 一些事情:

 AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withRegion("") .withCredentials(new AWSStaticCredentialsProvider(awsCreds)) .enablePathStyleAccess() .disableChunkedEncoding() .build();