一 .Amazon S3介绍

Amazon Simple Storage Service (Amazon S3) 是一种对象存储,它具有简单的 Web 服务接口,可用于在 Web 上的任何位置存储和检索任意数量的数据。它能够提供 99.999999999% 的持久性,并且可以在全球大规模传递数万亿对象。

客户使用 S3 作为云原生应用程序的主要存储;作为分析的批量存储库或“数据湖”;作为备份和恢复以及灾难恢复的目标;并将其与无服务器计算配合使用。

使用 Amazon 的云数据迁移选项,客户可以轻松地将大量数据移入或移出 Amazon S3。数据在存储到 S3 中之后,会自动采用成本更低、存储期限更长的云存储类 (如 S3 Standard – Infrequent Access 和 Amazon Glacier) 进行存档。

二.Java S3 Example

准备工作:

1.导入依赖包

com.amazonaws

aws-java-sdk

1.9.2

2.在s3服务中创建用户,获取用户的Access key和Secret Access Key,使用这个作为凭证连接s3

3.在s3服务中配置AWSConnector和AmazonS3FullAccess的连接权限。可以通过这个配置,在访问的时候进行authenticate验证。

s3 api简单操作:

1.创建凭证

AWSCredentials credentials = new BasicAWSCredentials("YourAccessKeyID", "YourSecretAccessKey");

2.创建S3 Client

AmazonS3 s3client = new AmazonS3Client(credentials);

3.创建Bucket

String bucketName = "javatutorial-net-example-bucket";

s3client.createBucket(bucketName);

4.获取s3 Bucket的list

for (Bucket bucket : s3client.listBuckets()) {

System.out.println(" - " + bucket.getName());

}

5.在s3 Bucket中创建文件

public static void createFolder(String bucketName, String folderName, AmazonS3 client) {

// create meta-data for your folder and set content-length to 0

ObjectMetadata metadata = new ObjectMetadata();

metadata.setContentLength(0);

// create empty content

InputStream emptyContent = new ByteArrayInputStream(new byte[0]);

// create a PutObjectRequest passing the folder name suffixed by /

PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName,

folderName + SUFFIX, emptyContent, metadata);

// send request to S3 to create folder

client.putObject(putObjectRequest);

}

6.上传文件

String fileName = folderName + SUFFIX + "testvideo.mp4";

s3client.putObject(new PutObjectRequest(bucketName, fileName,

new File("C:\\Users\\user\\Desktop\\testvideo.mp4")));

7.删除Bucket

s3client.deleteBucket(bucketName);

8.删除文件

s3client.deleteObject(bucketName, fileName);

完整实例

import java.io.ByteArrayInputStream;

import java.io.File;

import java.io.InputStream;

import java.util.List;

import com.amazonaws.auth.AWSCredentials;

import com.amazonaws.auth.BasicAWSCredentials;

import com.amazonaws.services.s3.AmazonS3;

import com.amazonaws.services.s3.AmazonS3Client;

import com.amazonaws.services.s3.model.Bucket;

import com.amazonaws.services.s3.model.CannedAccessControlList;

import com.amazonaws.services.s3.model.ObjectMetadata;

import com.amazonaws.services.s3.model.PutObjectRequest;

import com.amazonaws.services.s3.model.S3ObjectSummary;

public class AmazonS3Example {

private static final String SUFFIX = "/";

public static void main(String[] args) {

// credentials object identifying user for authentication

// user must have AWSConnector and AmazonS3FullAccess for

// this example to work

AWSCredentials credentials = new BasicAWSCredentials(

"YourAccessKeyID",

"YourSecretAccessKey");

// create a client connection based on credentials

AmazonS3 s3client = new AmazonS3Client(credentials);

// create bucket - name must be unique for all S3 users

String bucketName = "javatutorial-net-example-bucket";

s3client.createBucket(bucketName);

// list buckets

for (Bucket bucket : s3client.listBuckets()) {

System.out.println(" - " + bucket.getName());

}

// create folder into bucket

String folderName = "testfolder";

createFolder(bucketName, folderName, s3client);

// upload file to folder and set it to public

String fileName = folderName + SUFFIX + "testvideo.mp4";

s3client.putObject(new PutObjectRequest(bucketName, fileName,

new File("C:\\Users\\user\\Desktop\\testvideo.mp4"))

.withCannedAcl(CannedAccessControlList.PublicRead));

deleteFolder(bucketName, folderName, s3client);

// deletes bucket

s3client.deleteBucket(bucketName);

}

public static void createFolder(String bucketName, String folderName, AmazonS3 client) {

// create meta-data for your folder and set content-length to 0

ObjectMetadata metadata = new ObjectMetadata();

metadata.setContentLength(0);

// create empty content

InputStream emptyContent = new ByteArrayInputStream(new byte[0]);

// create a PutObjectRequest passing the folder name suffixed by /

PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName,

folderName + SUFFIX, emptyContent, metadata);

// send request to S3 to create folder

client.putObject(putObjectRequest);

}

/**

* This method first deletes all the files in given folder and than the

* folder itself

*/

public static void deleteFolder(String bucketName, String folderName, AmazonS3 client) {

List fileList =

client.listObjects(bucketName, folderName).getObjectSummaries();

for (S3ObjectSummary file : fileList) {

client.deleteObject(bucketName, file.getKey());

}

client.deleteObject(bucketName, folderName);

}

}

参考:

https://javatutorial.net/java-s3-example

https://aws.amazon.com/cn/s3/getting-started/

python版的s3 api:

http://boto3.readthedocs.io/en/latest/guide/quickstart.html

java s3_Amazon S3 功能介绍相关推荐

  1. Java 14 新功能介绍!

    Java 14 新功能介绍! Java 14预定于3月17日发布.那么,14版究竟有什么新功能,对于整天写代码.维护代码的Java开发者来说,哪些功能最有用呢? 作者 | Raoul-Gabriel ...

  2. Java 17 新功能介绍(LTS)

    点赞再看,动力无限.Hello world : ) 微信搜「 程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录,有很多知识点和系列文章. Ja ...

  3. Java 版本任你发,我用Java8.(Java 15 新功能介绍 )

    Java 15 在 2020 年 9 月发布,虽然不是长久支持版本,但是也带来了 14 个新功能,这些新功能中有不少是十分实用的. Java 15 官方下载:Archived OpenJDK GA R ...

  4. Amazon S3 功能介绍

    一 .Amazon S3介绍 Amazon Simple Storage Service (Amazon S3) 是一种对象存储,它具有简单的 Web 服务接口,可用于在 Web 上的任何位置存储和检 ...

  5. Java class.forname 功能介绍

    Class.forName()主要功能:Class.forName(xxx.xx.xx)返回的是一个类,Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类,也就是说J ...

  6. Annotation之一:Java Annotation基本功能介绍

    一.元数据的作用 如果要对于元数据的作用进行分类,目前还没有明确的定义,不过我们可以根据它所起的作用,大致可分为三类: 编写文档:通过代码里标识的元数据生成文档.这是最常见的,也是java 最早提供的 ...

  7. Java 18 新功能介绍

    Java 18 在2022 年 3 月 22 日正式发布,Java 18 不是一个长期支持版本,这次更新共带来 9 个新功能. OpenJDK Java 18 下载:https://jdk.java. ...

  8. java ee打印功能_Java EE:异步构造和功能

    java ee打印功能 介绍 Java EE具有许多API和构造以支持异步执行. 从可伸缩性和性能的角度来看,这是至关重要的. 让我们假设2个模块相互交互. 当模块A (发送方)以同步方式向模块B ( ...

  9. Java SE 8新功能介绍:使用Streams API处理集合

    使用Java SE 8 Streams的代码更干净,易读且功能强大..... 在" Java SE 8新功能介绍"系列的这篇文章中,我们将深入解释和探索代码,以了解如何使用流遍历集 ...

最新文章

  1. 树上启发式合并问题 ---- D. Tree and Queries[树上启发式合并+树状数组]
  2. just函数python_提升 Python 性能 Numba 与 Cython
  3. anaconda 安装 pytorch
  4. mysql目录树_无限级目录树+记忆节点状态(PHP+mysql)
  5. 编程之美 3.1 字符串移位包含问 复杂度(O(N*K)
  6. Ambari 安装配置 MySql
  7. You must install signalwire-client-c to build mod_signalwire。
  8. java中基本类型占了几个字节(byte、char等)
  9. Vue地区选择器==V - Distpicker
  10. PDF格式分析(七十九)——图章、墨迹注释(Stamp、Ink)
  11. python b64encode_python base64编码解码、SHA256编码、urlsafe_b64encode编码
  12. 短租APP开发定制快速搭建
  13. 100道面试题,能否进蚂蚁看你了!
  14. 如何提高内存卡的读写速度
  15. c++ sleep函数 linux,sleep()函数 | C/C++程序员之家
  16. 门禁系统服务器需要什么要求,完备的门禁系统应该具有这些功能
  17. 【总结】pick定理Farey序列
  18. 3-10 Pandas的数据规整
  19. win10任务栏显示“中/英“语言标识
  20. Windows中制作傻瓜式安装 Yosemite黑苹果教程。看完你就懂了会了

热门文章

  1. Win10 下安装 MSYS2
  2. Bezier曲线、B样条和NURBS的基本概念
  3. 运筹学基础【四】 之 库存管理
  4. java斗地主案例,没有界面
  5. 用PL/SQL创建图书表
  6. hihihi,我又回来啦!今天分享的是2021:【例4.6】最大公约数 代码如下
  7. Python+Eclipse配置`PyDev`完整教程
  8. Android 微博登录
  9. 区块链学习5:智能合约Smart contract原理及发展历程科普知识
  10. 为什么Hashtable ConcurrentHashmap不支持key或者value为null