java aws s3_java操作AWS S3一些坑记录
1,aws sdk jar版本不一致問題
一開始我在pom.xml中只配置了如下aws-java-sdk-s3
com.amazonaws
aws-java-sdk-s3
1.11.506
然后eclipse工程中如下截圖,可以看到這3個jar版本不一致
然后我直接執行下面的代碼put 字符串和上傳文件
1 packagecom.hp.nova.common.tasksync.awss3;2
3 importjava.io.File;4 importjava.io.IOException;5
6 importcom.amazonaws.AmazonServiceException;7 importcom.amazonaws.SdkClientException;8 importcom.amazonaws.auth.AWSCredentials;9 importcom.amazonaws.auth.AWSStaticCredentialsProvider;10 importcom.amazonaws.auth.BasicAWSCredentials;11 importcom.amazonaws.auth.profile.ProfileCredentialsProvider;12 importcom.amazonaws.services.s3.AmazonS3;13 importcom.amazonaws.services.s3.AmazonS3ClientBuilder;14 importcom.amazonaws.services.s3.model.ObjectMetadata;15 importcom.amazonaws.services.s3.model.PutObjectRequest;16
17 public classUploadObject {18
19 public static void main(String[] args) throwsIOException {20 String clientRegion = "cn-northwest-1";21 String bucketName = "nova-test";22 String stringObjKeyName = "novatestkey";23 String fileObjKeyName = "test.txt";24 String fileName = "C:/nova_work_document/test.txt";25
26 try{27 AWSCredentials awsCredentials = new BasicAWSCredentials("Access key ID", "Secret access key");28 AmazonS3 s3Client =AmazonS3ClientBuilder.standard()29 .withRegion(clientRegion)30 .withCredentials(newAWSStaticCredentialsProvider(awsCredentials))31 .build();32
33 //Upload a text string as a new object.
34 s3Client.putObject(bucketName, stringObjKeyName, "Uploaded String Object");35
36 //Upload a file as a new object with ContentType and title specified.
37 PutObjectRequest request = new PutObjectRequest(bucketName, fileObjKeyName, newFile(fileName));38 ObjectMetadata metadata = newObjectMetadata();39 metadata.setContentType("plain/text");40 metadata.addUserMetadata("x-amz-meta-title", "someTitle");41 request.setMetadata(metadata);42 s3Client.putObject(request);43 }44 catch(AmazonServiceException e) {45 //The call was transmitted successfully, but Amazon S3 couldn't process46 //it, so it returned an error response.
47 e.printStackTrace();48 }49 catch(SdkClientException e) {50 //Amazon S3 couldn't be contacted for a response, or the client51 //couldn't parse the response from Amazon S3.
52 e.printStackTrace();53 }54 }55 }
就會報錯如下
Exception in thread "main" java.lang.NoSuchFieldError: SIGNING_REGION
at com.amazonaws.services.s3.AmazonS3Client.createRequest(AmazonS3Client.java:4654)
at com.amazonaws.services.s3.AmazonS3Client.createRequest(AmazonS3Client.java:4630)
at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1706)
at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:3819)
at com.hp.nova.common.tasksync.awss3.UploadObject111.main(UploadObject111.java:34)
解決方法:
在pom.xml中把如下都配置上
com.amazonaws
aws-java-sdk-s3
1.11.506
com.amazonaws
aws-java-sdk-kms
1.11.506
com.amazonaws
aws-java-sdk-core
1.11.506
com.amazonaws
jmespath-java
1.11.506
jar包的情況如下圖
然后執行就可以成功了
總結
以上是生活随笔為你收集整理的java aws s3_java操作AWS S3一些坑记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内存条超频大揭秘:从选购到稳定测试,成功
- 下一篇: 2400MHz内存超频实验:惊人性能提升