Amazon的S3是一个公开的服务,使 Web 开发人员能够存储数字资产(如图片、视频、音乐和文档等),以便在应用程序中使用。开发人员将数字资源通过S3 API或登陆S3的管理页面,上传到S3服务器,生成一个url,可以通过url访问该数字资源。
我们这里采用S3 API工具类的为JetS3t。通过rest接口操作S3上的对象,用到的jar包为jets3t-0.9.0.jar。
- 常用操作API
1.创建s3Service对象
输入:访问密钥awsAccessKey,秘密密钥awsSecretKey
输出:s3Service对象
String awsAccessKey = "****";
String awsSecretKey = "****";
AWSCredentials awsCredentials = new AWSCredentials(awsAccessKey, awsSecretKey);
S3Service s3Service = new RestS3Service(awsCredentials);
2.创建存储段
输入:存储段名称bucketName
输出:存储段bucket(类似于文件夹)
S3Bucket bucket = s3Service.getOrCreateBucket("video");
3.创建S3对象
输入:存储段bucket,S3对象路径
输出:S3对象s3obj(类似于文件,S3对象的key为文件名XXX.mp4)
S3Object s3obj = new S3Object(bucket, new File("/path/video/XXX.mp4"));
4.上传文件
输入:存储段bucket,S3对象s3obj
输出:
s3Service.putObject(bucket, s3obj);
5.创建具有有效期的url
输入:存储段bucket名称,S3对象key,有效时间 (秒)
输出:具有有效期的url
String url = s3Service.createSignedUrl(method,bucketName,objectKey,specialParamName,headersMap,secondsSinceEpoch,false,false,false);
6.删除S3对象
输入:存储段bucket名称,S3对象key
输出:
s3Service.deleteObject(bucket.getName(), s3obj.key);
7.列出所有bucket
S3Bucket[] buckets = s3Service.listAllBuckets();
for (S3Bucket b : buckets) {
System.out.println(b);
}
- 文件上传流程
第一步S3认证
第二步创建文件夹(bucket)
第三步创建文件(s3obj)
第四步上传文件,上传完文件到S3后,我们可以得到该文件的url,例如 http://video.s3.amazonaws.com/XXX.mp4
但该url是不能直接被访问的
第五步创建可以访问的url,例如
https://video.s3.amazonaws.com/XXX.mp4?AWSAccessKeyId=1asd06A5MR2&Expires=1234738280&Signature=rZvk8Gkms =
通过该url可以访问文件,但该url具有有效期,超过有效期后不能访问该文件
- 参考资料
http://storage.chinaunix.net/a2009/1013/758/000000758429.shtml
http://www.ibm.com/developerworks/cn/web/ar-cloudaws2/index.html