AWS S3 全称:(Amazon Simple Storage Service), 是一种面向网络的存储服务,可以支持用户随时在Web的任何位置,存储和检索任意大小的数据
本身也提供了简单而直观的管理控制台来处理这些任务,但我这里使用的是,面向Java方向的S3网络存储服务
在进入正题之前,首先介绍下AWS S3的一些概念
1.存储桶
存储桶是Amazon S3中用于存储对象的容器,每个对象都存在各自的存储桶中
存储桶可以组织最高等级的Amazon S3命名空间、识别负责存储和数据传输费用的账户、在访问控制中发挥作用以及用作使用率报告的汇总单位。
2.对象
Amazon S3中存储的实体,由对象数据和元数据组成
对象数据对Amazon S3不透明
元数据是一组描述对象的名称-值对,包含一些默认的元数据(修改日期)和标准HTTP元数据(Content-Type)
可以在存储对象是自定义元数据
3.键
存储桶中对象的唯一标识符
将存储桶,键和版本ID组合一起可以唯一的表示每个对象,可以将Amazon S3视为“存储桶+键+版本”与对象本身间的基本数据映射
4.区域
Amazon根据全球不同国家,划分了很多区域,每个区域的存储桶是互不干扰的
介绍基本概念之后,进入正题,即面向Java的Amazon S3网络存储实现
主要包括,Jar支持,客户端生成和功能函数引用
官网:https://docs.aws.amazon.com/zh_cn/sdk-for-java/v1/developer-guide/credentials.html
1.Jar支持
这里采用BOM形式的Maven引入
首先,引入aws的bom并制定版本
com.amazonaws
aws-java-sdk-bom
1.11.327
pom
import
其次,引入需要的依赖
com.amazonaws
aws-java-sdk-ec2
com.amazonaws
aws-java-sdk-s3
com.amazonaws
aws-java-sdk-dynamodb
如果不想采用BOM形式,也可以直接导入所有的依赖
com.amazonaws
aws-java-sdk
1.11.327
2.客户端生成
客户端是访问Web不可或缺的功能,Amazon S3客户端生成,主要依赖一下几项
Region:区域
Credentials:证书(accessKey, secretKey)
AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
AmazonS3Client s3 = AmazonS3Client.builder()
.withRegion(this.region)
.withCredentials(new AWSStaticCredentialsProvider(credentials))
.build();
3.上传功能
s3.putObject(bucket_name, key_name, tempFile);
4.下载功能
这里有个说明,一下功能有文件大小的限制
S3Object o = s3.getObject(bucket_name, key_name);
S3ObjectInputStream s3is = o.getObjectContent();
body = new byte[(int)o.getObjectMetadata().getContentLength()];
s3is.read(body);
s3is.close();