0x0 前言
Amazon Simple Storage Service 是互联网存储解决方案。该服务旨在降低开发人员进行网络规模级计算的难度。
Amazon S3 提供了一个简单 Web 服务接口,可用于随时在 Web 上的任何位置存储和检索任何数量的数据。此服务让所有开发人员都能访问同一个具备高扩展性、可靠性、安全性和快速价廉的数据存储基础设施, Amazon 用它来运行其全球的网站网络。此服务旨在为开发人员带来最大化的规模效益。
0x1 名词介绍
0x1_1 存储桶(Bucket)
存储桶是 Amazon S3 中用于存储对象的容器。每个对象都储存在一个存储桶中。
0x1_2 对象(Object)
对象是 Amazon S3 中存储的基本实体。对象由对象数据和元数据组成。在存储桶中,对象将由键 (名称) 和版本 ID 进行唯一地标识。注:版本ID 非必须,需要再存储桶
中配置启用版本控制
。
0x1_3 键(Key)
键是指存储桶中对象的唯一标识符。存储桶内的每个对象都只能有一个键。由于将存储桶、键和版本 ID 组合在一起可唯一地标识每个对象,可将 Amazon S3 视为一种“存储桶 + 键 + 版本”与对象本身间的基本数据映射。
0x1_4 版本ID(VersionId)
通过VersionId
,可以在一个存储桶中保留多个对象版本,例如, report_201706.csv
(版本 111111) 和 report_201706.csv
(版本 222222)。可以启用版本控制来防止自己意外覆盖和删除版本,或存档对象,以便您可以检索早期版本的对象。如果不启用则相同Key
采用覆盖策略。
- PUT(开启版本控制):
- DELETE(开启版本控制)
0x1_5 区域(Region)
存储桶所在地理区域,在某一区域存储的对象将一直留在该区域,除非您特意将其传输到另一区域。定位对象需要 区域>账户授权(获取账户)>桶>key(+version id)来定位到存储对象。
0x2 起步
0x2_1 操作
对存储桶、对象等操作可以有一下几种方式,本文主要讲解SDK操作:
- AWS S3控制台操作
- 命令行操作
- SDK 操作(多种语言SDK,这里以JAVA SDK为例)
- REST API
0x2_2 依赖(Maven)
- 引入AWS SDK 依赖管理
<dependencyManagement>
<dependencies>
<!--AWS S3需要至少4.5.2以上版本-->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-bom</artifactId>
<version>1.11.170</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
- 引入S3-SDK
<dependencies>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency>
<dependency>