S3 学习笔记
一、S3概述1.1、简介S3是Standard Storage Service的简称,即标准存储服务。即分布式的、存储容量可无限扩容的、保证数据不丢失的、安全的、低成本的存储解决方案。S3旨在为公有云用户解决下面的存储痛点:1、存储可无限扩容:用户自建存储集群节点扩容时数据迁移成本高。单个bucket存储容量无限制,单个文件最大50TB限制。2、安全:保证只被授权用户访问(问题:CDN访问时怎样做
一、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资源。
更多推荐
所有评论(0)