S3 学习笔记

Posted Shi Peng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了S3 学习笔记相关的知识,希望对你有一定的参考价值。

一、S3概述

1.1、简介

S3是Standard Storage Service的简称,即标准存储服务。即分布式的、存储容量可无限扩容的、保证数据不丢失的、安全的、低成本的存储解决方案。

1.2、产品价值

S3旨在为自建存储的用户解决下面的痛点:
1、存储可无限扩容:用户自建存储集群节点扩容时数据迁移成本高。单个bucket存储容量无限制,单个文件最大50TB限制。
2、安全:保证只被授权用户访问(问题:CDN访问时怎样做授权校验?)
3、数据可靠不丢失:通过冗余备份+EC纠删码的方式,保证11个9的不丢失保证。
4、成本:采用低成本存储介质,并提供普通存储、低频存储、归档存储等不同维度的存储成本方案。

1.3、产品使用方式

1.3.1、通过工具

1.3.1.1、Java版图形客户端

1、可实现文件的上传、下载、删除,创建bucket,根据前缀搜索文件;
2、设置上传及下载线程数、上传下载限速,断网重试次数,按bucket维度登陆等。

1.3.1.2、Java版数据迁移工具

1、支持从阿里云OSS,腾讯COS,百度云、七牛云、AWS S3、Azure作为数据源,迁移数据到S3。
2、支持增量上传
3、支持大文件断点续传
4、设置上传并发度
5、支持迁移进度查询
6、海量数据上传,部分丢失时,可全部重新上传,已有的会自动跳过

1.3.1.3、命令行工具

列出Bucket下所有Object、上传、下载、批量下载、批量删除、批量设置ACL等

1.3.1.4、可视化签名debug工具

可让用户通过界面比较自己计算的签名,和正确的签名做可视化对比,快速定位签名计算错误的问题

1.3.2、通过客户端SDK

提供了多语言版本的SDK,让应用开发者可快速使用S3做上传、下载。
多语言:java, php, python, c#, c/c++, go, node.js, javascript, android, ios

1.3.3、通过 Restful API 接口访问

通过HTTP header传递签名
兼容AS3所有接口

1.3.4、通过管理后台访问

可通过浏览器访问S3为用户提供的管理后台,可进行管理账号、查看费用、权限设置等操作

二、S3术语

2.1、AccessKey & SecretKey

对于S3的每个用户,S3会为其分配一个AccessKey(20字符长)作为身份唯一标识,一个SecretKey作为秘钥,秘钥存储在用户服务器上,不进行网络传输。SecretKey主要用于计算签名。

通过AccessKey做身份识别 + 通过SecuretKey做签名,可用于完成访问权限验证。

2.2、Region(地区–城市)

Region通常指城市,在创建bucket时要指定距离最近的Region,这样bucket的数据就存在了其指定的城市的服务器上。

Region一旦在bucket创建时指定后就不可修改了,否则S3要做跨城市的额数据迁移才行。

2.3、EndPoint(访问域名)

EndPoint访问域名,主要用于用户通过Restful API 方式访问时使用,不同的Region, EndPoint不同;内网和外部,EndPoint也不同。

2.4、Service

对于S3来说,一个B端用户,拥有一个Service, 即该用户的虚拟存储空间,一个Service里有一个或多个Bucket。

2.5、Bucket

Bucket是存放对象的容器,一个B端用户,最多有100个Bucket,每个Bucket可存储无限个Object,Bucket不可嵌套。

2.6、Object(对象–文件)

即存储的文件,单个文件最多支持48.8TB。
每个Object包含key和value, 其中key是对象名,value是对象数据。key要求是utf-8编码,最大1024个字符。
key中可以带/,带/的key, 会自动在控制台里组织成目录结构。

2.7、ACL(访问权限)

通过ACL管理 Bucket 和 Object 的访问权限,每个bucket和每个object都有其对应的ACL。

读:只能看,不能下载
写:可以上传、下载

2.8、预设ACL

2.9、Logging(日志)

当给Bucket配置Logging之后,每天将会自动把该Bucket的操作日志上传到指定的Bucket。

三、存储分类

3.1、标准存储

适用于频繁访问的数据,要求低延迟、高吞吐的图片、音视频、网站静态资源等。

3.2、低频访问存储

适用于长期保存、低频访问的数据,如DB备份等。
低频计费最短存30天。

3.3、归档存储

适用于长期存储,访问率极低的场景,如日志归档、医疗影像等等。
归档存储的可靠性跟标准存储相同,但读取时需要1~10分钟解冻时间。
归档计费最短存90天,解冻时的读取流量也是收费的。

不同存储类型对比

四、S3支持功能

4.1、上传文件

上传文件前,需要先选指定Region下创建个Bucket,然后把文件上传到Bucket中。

4.2、文件下载 & 分享

上传文件后,可分享文件的链接地址,private文件的链接有效期是有限的

4.3、删除文件

删除时,可选择删除 文件 或 目录

4.4、访问权限管理

默认S3的所有资源都是私有的,即只有创建该S3资源的账户可访问,但资源拥有者可以通过下面方式授权其他用户访问:
1)ACL:每个bucket和object都对应一个ACL,ACL可以对其他用户授权,如读写权限
2)空间授权:资源拥有者可以向其他账户或IAM((Identity and Access Management)下的子账户授权,该授权包括存储空间权限,及对象的权限。
3)用户策略:可使用IAM管理用户授权:可在主账户中创建子账户(IAM账户)、组、角色,并通过附加访问策略授予他们对S3资源的访问权限。

4.5、项目管理

不同项目可以用不同的bucket, 这样方便权限管理

4.6、防盗链

用户可以对bucket中的数据设置防盗链:通过设置黑白名单。其中黑名单可设置禁止访问源的域名;白名单可设置允许访问源的域名。

4.7、日志设置

可在管理后台设置 启动或禁止 Bucket的日志

4.8、自定义域名与Bucket绑定

通过绑定自定义域名与Bucket, 方便用户用域名访问s3上的数据。

4.9、跨域资源共享

开发者可以利用KS3提供的接口控制跨域访问的各种权限,开发灵活的WEB应用程序。

4.10、设置重命名文件名

启用该功能后,当用户上传完文件,可根据用户设置的文件名规则,重命名该上传的文件

4.11、镜像回源和文件预推

4.11.1、镜像回源

从OSS迁移数据到S3过程中,用户回源访问S3,如果S3上没有,S3会返回给用户一个Location指向源站的302重定向请求;同时,S3也会异步向回源地址请求该文件,并保存至S3中

4.11.2、文件预推

用户可根据模板中的资源列表,将文件从镜像源站拉取到KS3中,并根据所设定的规则进行存储。
这是为了避免减少镜像回源的请求,提升请求效率。

4.12、生命周期管理

可设置满足某种规则,且早于某个时间点(或对象最后一次被修改后果了一段时间)的数据,进行降为低频存储、归档存储、或批量删除。

4.13、跨区域复制

把源区域中的Bucket数据操作(如新建、覆盖、删除等),同步到新的区域的Bucket中。

4.14、图片处理

支持对存储在S3中的图片做处理,如格式转换、裁剪、缩放、旋转、水印和添加样式等。

4.15、云监控

用户可以使用 云监控API 或 SDK 来读取云监控的数据。
该数据延迟10小时左右。

4.16、使用工具、API、SDK管理S3资源

S3提供图形化工具、数据迁移工具、命令行工具等帮助用户管理S3资源
也可以通过Restful API 或通过SDK来管理S3资源。

以上是关于S3 学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

学习Linux下s3c2440的USB鼠标驱动笔记

五搭建S3C6410开发板的测试环境—学习笔记

S3C2440 输入子系统学习笔记 第一节

python学习笔记— 集合

AWS学习笔记--CLI管理Image,Instance,Snapshot,S3

Android深度探索(卷1)HAL与驱动开发学习笔记