amazon (S3) 是一个公开的服务,Web 应用程序开发人员可以使用它存储数字资产,包括图片、视频、音乐和文档等。除去 aws 本身的服务可以将一些内容直接存储到 s3 桶之外 ,在很多情况下,还需要使用 s3 桶和外部服务进行交互,比如下面一些场景:
- 场景一:配置使用 aws 服务产生的账单费用以文件的形式定期发送到 s3 桶,本地服务获取这些文件,生成新的账单或进行费用监控。
- 场景二:配置使用 aws 服务产生的日志文件定期发送到 s3 桶,本地服务获取这些文件,做数据分析,预防风险。
- 场景三:将 s3 桶当做无限量永久文件存储器,定期将文件上传到 s3 桶。
无论哪种场景,使用控制台手动同步这些文件显然不是明智的选择,那么就需要用到 Amazon 提供的各种 API 来实现这些操作。下面是使用 java 对 s3 桶操作的一些示例,需要的小伙伴可以使用 cv 大法啦。
首先引入 java 版的 sdk。如果是本地开发,一般可以只引入 aws-java-sdk 一个 jar 包,它包含了所有 aws 服务的包。而通常我们只使用 aws 服务的一种或几种,那么我们可以单独引入使用的相关服务的包。其中 kms 和 core 是所有服务包的依赖包,为减少因版本可能带来的问题,建议也进行显式引入。这里我选择的版本是:1.11.538。
pom.xml
连接 awsAPI 基本信息类,替换其中的 ak、sk 和区域。
AwsBaseClient
获取连接 s3 桶客户端的类。这里提供了供子类获取默认 s3 客户端方法,供子类获取自定义 s3 客户端的方法,代外部类获取 s3 客户端的默认以自定义方法。
AwsS3Client
s3桶常用操作类。
AwsS3Bucket
s3 桶文件操作类:
AwsS3File
另外附上两个 test 类:
AwsS3BucketTest
package com.study.s3;
import org.junit.Test;
public class AwsS3BucketTest {
private AwsS3Bucket awsS3Bucket = new AwsS3Bucket();
@Test
public void listBuckets() {
awsS3Bucket.listBuckets();
}
@Test
public void createBucketBase() {
awsS3Bucket.createBucketBase();
}
@Test
public void createBucketWithParams() {
}
@Test
public void deleteBucket() {
awsS3Bucket.deleteBucket();
}
@Test
public void configBucket() {
awsS3Bucket.configBucket();
}
}
AwsS3FileTest
package com.study.s3;
import org.junit.Test;
import java.io.IOException;
public class AwsS3FileTest {
private AwsS3File awsS3File = new AwsS3File();
@Test
public void listFiles() {
awsS3File.listFiles();
}
@Test
public void uploadFile() {
awsS3File.uploadFile();
}
@Test
public void deleteFile() {
}
@Test
public void downloadFile() {
}
@Test
public void downloadFileWithPrint() {
try {
awsS3File.downloadFileWithPrint();
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void downloadFileWithSave() {
try {
awsS3File.downloadFileWithSave();
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void copyFile() {
}
}
扫描下方二维码,加入我们,获取更多关于云计算的文章