首页
互助圈
新手教程
进阶之路
算法原理
架构设计
JAVA进阶
C/C++进阶
Python进阶
JavaScript
数据库
大数据
消息服务
源码解读
JAVA源码
Spring源码
数据库
消息服务
Dubbo源码
面试指南
大厂专栏
面试技巧
面试经验
面试题库
开发资料
文档资料
工具软件
电子书籍
小牛导航
在线工具
登录
当前位置:
首页
>
工具软件
>
Glacier Framework
>
使用案例
>
AWS S3 and Glacier
公羊俭
2023-12-01
S3 (Simple Storage Service)
Bucket
Bucket全局唯一,一个account默认可创建100个bucket,一般用DNS名字命名
AWS region
创建Bucket的时候需要选择region,region在物理和逻辑上完全独立,除非用户手动从一个region复制数据到另一个region
可以选择离端点用户地理位置近的region创建bucket,也可以选择离主数据中心远的地方创建region,以实现容灾
AWS支持cross region replication,但需要开启version并设置相应的IAM策略
Object
S3是AWS提供的对象存储服务,存储的是对象,不是文件。一个对象包含data和metadata,metadata包含系统的metata,如上次修改时间,ACL控制,Object Size, MD5等,也可以包含用户自定义metadata,如果tag等。
一个对象的数据大小范围为
0-5TB
对象存储与block存储和文件存储的区别
对象存储基于对象,用API,CLI,SDK等操作数据,虽然有逻辑上的层次结构,且看上去很像文件目录,但实际上没有文件系统,底层也不一定按照层次结构存储。
block存储基于存储设备,存放的是固定大小的block,协议有iSCSI,FC等。
文件存储基于操作系统,存放的是文件,AWS提供了EFS NSA服务,协议有CIFS,NFS。
Key
用于标识一个对象,如:path1/path2/path3/…/filename
对象的唯一标识:buckname + key + version
Object URL
http://mybucket.s3.amazon.com/fee/fi/fo/fum/jack.doc, 其中,mybucket是bucket名称,fee/fi/fo/fum/jack.doc是该对象的key
如何操作S3的对象和bucket
CLI,RESTful API,SDK,Console,SOAP(New features are not supported)
持久性和可靠性
默认情况S3提供
11×9
的持久性和
4×9
的可靠性。
持久性:Will my data still be there in the future?
可靠性:Can I access my data right now?
一致性
AWS提供数据最终一致性,对于新增加的数据,不会读取到旧数据,因为要么读取到数据,要么读取不到数据
对于修改已经存在的数据,如果此时立即读取,由于数据的同步需要一定时间,此时可能读取到修改前的旧数据
同理,对于删除数据,也可能读取到旧的数据
不管怎样,最终要么读取到新数据,要么读取不到数据,数据最终一致
访问控制
Bucket policy,推荐,控制粒度很细
ACLs,不推荐,控制粒度粗糙
IAM
query-string authentication
静态网站主机
S3可以当作静态网站服务,将文件上传到bucket并全部设置为public,开启static websit hosting服务并指定index和error page,此时可以访问静态页面。可以使用Route 53,设置一个友好的DNS name,这个是可选的。
可以作为静态网站的资源有,html,js,css,pic,file,video,music,etc。
可以结合Cloud Front来缓存静态资源,以提高网站性能。
前缀和分隔符
CLI,API,SDK等都支持通过前缀和分隔符操作资源。
分隔符支持"/"和"\"。
存储类别
S3 Standard,标准存储类别,高可用,高持久,低延迟,高性能,大部分场景都可以使用。价格最高。
S3 Standard - Infrequent Access,不经常访问的数据,且数据至少要保存30天。高可用,高持久,低延迟,高性能。费用比Standard低。
S3 Reduced Redundancy Storage,减少了冗余的存储,提供
4*9
的持久性,可以存储容易还原的数据,如视频,缩略图等。费用比Standard低。
Glacier,glacier可以作为单独的对象存储,与S3类似,也可以作为S3的一个存储类别。一般存放归档数据,且提交获取请求后,可能要等3-5个小时才能拷贝到S3,不能立即获取。价格最低。
对象生命周期管理
设置策略管理对象生命周期,如,对象刚开始是S3 Standard类型,一段时间(如30天)后自动变为S3 Standard - Infrequent Access,一年后变为Glacier,三年后自动删除。
数据加密
可以选择加密或不加密,默认不加密。
支持加密方式:SSE-S3,SSE-KMS,SSE-C,Client-Side encryption。
SSE-3: AWS自动为每个对象分配不同密钥,并用AES-256加密数据,用master密钥加密对象密钥,对象,对象密钥,master密钥分别存放,且定期rotate master密钥。
SSE-KMS: AWS key management service管理密钥,可以autid密钥的操作。
SSE-C: 用户自己提供并管理密钥。
Client-Side encryption: 客户端加密,在上传数据前就加密。
版本控制
可以防止意外删除数据,因为删除后可以获取到之前任一版本的数据。
开启versioning后不能删除,只能暂停。
MFA删除
仅支持root账号。
在删除对象时需要指定MFA code,以防止意外删除。
Pre-Signed URL
使用SDK,CLI为一个对象创建pre-signed URL,并指定有效期,通过该URL且在有效期内可以访问对象。
可以防止URL扩散,被无权限的人任意访问数据。
Multipart Upload
对于较大的数据(>5 GB),支持分块并行上传,以提高效率。
AWS CLI默认就开启,如aws s3 cp, aws s3 mv, aws s3 sync等。
Range Gets
对于较大 数据,不用一次全部下载,可以只下载其某一部分。
跨region复制
开启version,并设置相关的IAM权限,可以跨region复制对象。
开启此功能的目的是可以让终端用户访问最近的bucket以提高访问效率,或者是有特别的安全要求,需要存放多份数据拷贝。
注意:此功能并不是为了防止意外删除对象而设计。
Logging
支持Server access logging和object level logging,以跟踪对象的操作和访问。
事件通知
删除,增加,修改数据后可以将事件通知到SNS和SQS。
最佳操作和实践
S3可以使用在混合云的场景,本地存放一部分数据,备份和归档数据存放到S3。
S3可以存放DB索引对应的真实数据,DB存放数据索引,S3存放真实数据。
S3可以作为静态网站。
如果每秒访问的请求很多,可以通过Cloud Front缓存数据,或者为对象增加随机hash prefix,这样可以将请求尽可能的分散到不同的设备。
Glacier
Archives
与S3的Object类似,是归档数据。
支持
0-40TB
的大小,自动加密,且不可更改数据,每次创建数据时,会自动生成ID。
Vaults
与Bucket类似,用于存放archives,默认
1000
个valuts。
Valuts locks,锁住valuts,防止其它人修改,可指定策略,如:write once read many。
Data Retrieval
每月可以免费获取5%的数据,更多的数据需要收费。
S3 和 Glacier的区别
S3
Glacier
高可靠,高持久
高可靠,高持久
经常访问的数据
不经常访问的数据
生产数据或归档数据
归档数据
每个对象最大5TB
每个归档最大40TB
可以自定义key
自动生成归档ID
选择加密或不加密
必须加密,且自动加密
可更改对象
不可修改归档数据
可以立即取回数据
3-5小时的取回时间
默认100个bucket
默认1000个vaults
类似资料:
相关阅读
相关文章
相关问答
快捷导航:
新手教程
算法原理
架构设计
Java进阶
数据库进阶
大厂专栏
面试经验
编程笔记
编程问答
所有专题
文档资料
工具软件
电子书籍
小牛导航
在线工具:
房贷计算器
个税计算器
Linux命令查询
Json格式化
正则表达式
颜色转换
AES加解密
SHA1加密
MD5加密
毒鸡汤
字数统计
随机密码生成
进制转换
Base64编解码
励志句子
Copyright © 2019-2024 小牛知识库@xnip.cn. All Rights Reserved.