创建工程
使用脚手架创建项目的框架
mvn archetype:generate -DarchetypeGroupId=software.amazon.awssdk -DarchetypeArtifactId=archetype-app-quickstart -DarchetypeVersion=2.20.43
输入表中的值
Prompt | Value to enter |
---|---|
Define value for property 'service': | s3 |
Define value for property 'httpClient' : | apache-client |
Define value for property 'nativeImage' : | false |
Define value for property 'credentialProvider' | identity-center |
Define value for property 'groupId': | org.example |
Define value for property 'artifactId': | getstarted |
Define value for property 'version' 1.0-SNAPSHOT: | <Enter> |
Define value for property 'package' org.example: | <Enter> |
确认上面的输入正确,按Y,如果不正确,按N重新输入正确的值
项目结构
maven镜像配置
<mirror>
<id>apache</id>
<name>apache maven</name>
<url>https://repo.maven.apache.org/maven2</url>
<mirrorOf>central</mirrorOf>
</mirror>
修改Handler代码,创建S3桶和删除S3桶
package org.example;
import software.amazon.awssdk.core.sync.RequestBody;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.CreateBucketRequest;
import software.amazon.awssdk.services.s3.model.DeleteBucketRequest;
import software.amazon.awssdk.services.s3.model.DeleteObjectRequest;
import software.amazon.awssdk.services.s3.model.HeadBucketRequest;
import software.amazon.awssdk.services.s3.model.PutObjectRequest;
import software.amazon.awssdk.services.s3.model.S3Exception;
public class Handler {
private final S3Client s3Client;
public Handler() {
s3Client = DependencyFactory.s3Client();
}
public void sendRequest() {
String bucket = "bucket" + System.currentTimeMillis();
String key = "key";
createBucket(s3Client, bucket);
System.out.println("Uploading object...");
s3Client.putObject(PutObjectRequest.builder().bucket(bucket).key(key)
.build(),
RequestBody.fromString("Testing with the {sdk-java}"));
System.out.println("Upload complete");
System.out.printf("%n");
cleanUp(s3Client, bucket, key);
System.out.println("Closing the connection to {S3}");
s3Client.close();
System.out.println("Connection closed");
System.out.println("Exiting...");
}
public static void createBucket(S3Client s3Client, String bucketName) {
try {
s3Client.createBucket(CreateBucketRequest
.builder()
.bucket(bucketName)
.build());
System.out.println("Creating bucket: " + bucketName);
s3Client.waiter().waitUntilBucketExists(HeadBucketRequest.builder()
.bucket(bucketName)
.build());
System.out.println(bucketName + " is ready.");
System.out.printf("%n");
} catch (S3Exception e) {
System.err.println(e.awsErrorDetails().errorMessage());
System.exit(1);
}
}
public static void cleanUp(S3Client s3Client, String bucketName, String keyName) {
System.out.println("Cleaning up...");
try {
System.out.println("Deleting object: " + keyName);
DeleteObjectRequest deleteObjectRequest = DeleteObjectRequest.builder().bucket(bucketName).key(keyName).build();
s3Client.deleteObject(deleteObjectRequest);
System.out.println(keyName + " has been deleted.");
System.out.println("Deleting bucket: " + bucketName);
DeleteBucketRequest deleteBucketRequest = DeleteBucketRequest.builder().bucket(bucketName).build();
s3Client.deleteBucket(deleteBucketRequest);
System.out.println(bucketName + " has been deleted.");
System.out.printf("%n");
} catch (S3Exception e) {
System.err.println(e.awsErrorDetails().errorMessage());
System.exit(1);
}
System.out.println("Cleanup complete");
System.out.printf("%n");
}
}
运行
需要访问权限,参考AWS Cli Windows安装配置-CSDN博客,创建访问秘钥,配置后在C:\Users\用户\.aws\下有config和credentials文件