AWS S3 and Glacier

S3 (Simple Storage Service)

  1. Bucket
    1. Bucket全局唯一,一个account默认可创建100个bucket,一般用DNS名字命名
  2. AWS region
    1. 创建Bucket的时候需要选择region,region在物理和逻辑上完全独立,除非用户手动从一个region复制数据到另一个region
    2. 可以选择离端点用户地理位置近的region创建bucket,也可以选择离主数据中心远的地方创建region,以实现容灾
    3.  AWS支持cross region replication,但需要开启version并设置相应的IAM策略
  3. Object
    1. S3是AWS提供的对象存储服务,存储的是对象,不是文件。一个对象包含data和metadata,metadata包含系统的metata,如上次修改时间,ACL控制,Object Size, MD5等,也可以包含用户自定义metadata,如果tag等。
    2. 一个对象的数据大小范围为0-5TB
    3. 对象存储与block存储和文件存储的区别
      1. 对象存储基于对象,用API,CLI,SDK等操作数据,虽然有逻辑上的层次结构,且看上去很像文件目录,但实际上没有文件系统,底层也不一定按照层次结构存储。
      2. block存储基于存储设备,存放的是固定大小的block,协议有iSCSI,FC等。
      3. 文件存储基于操作系统,存放的是文件,AWS提供了EFS NSA服务,协议有CIFS,NFS。
  4. Key
    1. 用于标识一个对象,如:path1/path2/path3/…/filename
    2. 对象的唯一标识:buckname + key + version
  5. Object URL
    1. http://mybucket.s3.amazon.com/fee/fi/fo/fum/jack.doc, 其中,mybucket是bucket名称,fee/fi/fo/fum/jack.doc是该对象的key
  6. 如何操作S3的对象和bucket
    1. CLI,RESTful API,SDK,Console,SOAP(New features are not supported)
  7. 持久性和可靠性
    1. 默认情况S3提供11×9的持久性和4×9的可靠性。
    2. 持久性:Will my data still be there in the future?
    3. 可靠性:Can I access my data right now?
  8. 一致性
    1. AWS提供数据最终一致性,对于新增加的数据,不会读取到旧数据,因为要么读取到数据,要么读取不到数据
    2. 对于修改已经存在的数据,如果此时立即读取,由于数据的同步需要一定时间,此时可能读取到修改前的旧数据
    3. 同理,对于删除数据,也可能读取到旧的数据
    4. 不管怎样,最终要么读取到新数据,要么读取不到数据,数据最终一致
  9. 访问控制
    1. Bucket policy,推荐,控制粒度很细
    2. ACLs,不推荐,控制粒度粗糙
    3. IAM
    4. query-string authentication
  10. 静态网站主机
    1. S3可以当作静态网站服务,将文件上传到bucket并全部设置为public,开启static websit hosting服务并指定index和error page,此时可以访问静态页面。可以使用Route 53,设置一个友好的DNS name,这个是可选的。
    2. 可以作为静态网站的资源有,html,js,css,pic,file,video,music,etc。
    3. 可以结合Cloud Front来缓存静态资源,以提高网站性能。
  11. 前缀和分隔符
    1. CLI,API,SDK等都支持通过前缀和分隔符操作资源。
    2. 分隔符支持"/"和"\"。
  12. 存储类别
    1. S3 Standard,标准存储类别,高可用,高持久,低延迟,高性能,大部分场景都可以使用。价格最高。
    2. S3 Standard - Infrequent Access,不经常访问的数据,且数据至少要保存30天。高可用,高持久,低延迟,高性能。费用比Standard低。
    3. S3 Reduced Redundancy Storage,减少了冗余的存储,提供4*9的持久性,可以存储容易还原的数据,如视频,缩略图等。费用比Standard低。
    4. Glacier,glacier可以作为单独的对象存储,与S3类似,也可以作为S3的一个存储类别。一般存放归档数据,且提交获取请求后,可能要等3-5个小时才能拷贝到S3,不能立即获取。价格最低。
  13. 对象生命周期管理
    1. 设置策略管理对象生命周期,如,对象刚开始是S3 Standard类型,一段时间(如30天)后自动变为S3 Standard - Infrequent Access,一年后变为Glacier,三年后自动删除。
  14. 数据加密
    1. 可以选择加密或不加密,默认不加密。
    2. 支持加密方式:SSE-S3,SSE-KMS,SSE-C,Client-Side encryption。
      1. SSE-3: AWS自动为每个对象分配不同密钥,并用AES-256加密数据,用master密钥加密对象密钥,对象,对象密钥,master密钥分别存放,且定期rotate master密钥。
      2.  SSE-KMS: AWS key management service管理密钥,可以autid密钥的操作。
      3. SSE-C: 用户自己提供并管理密钥。
      4. Client-Side encryption: 客户端加密,在上传数据前就加密。
  15. 版本控制
    1.  可以防止意外删除数据,因为删除后可以获取到之前任一版本的数据。
    2. 开启versioning后不能删除,只能暂停。
  16. MFA删除
    1. 仅支持root账号。
    2. 在删除对象时需要指定MFA code,以防止意外删除。
  17. Pre-Signed URL
    1. 使用SDK,CLI为一个对象创建pre-signed URL,并指定有效期,通过该URL且在有效期内可以访问对象。
    2. 可以防止URL扩散,被无权限的人任意访问数据。
  18. Multipart Upload
    1. 对于较大的数据(>5 GB),支持分块并行上传,以提高效率。
    2. AWS CLI默认就开启,如aws s3 cp, aws s3 mv, aws s3 sync等。
  19. Range Gets
    1. 对于较大 数据,不用一次全部下载,可以只下载其某一部分。
  20. 跨region复制
    1. 开启version,并设置相关的IAM权限,可以跨region复制对象。
    2. 开启此功能的目的是可以让终端用户访问最近的bucket以提高访问效率,或者是有特别的安全要求,需要存放多份数据拷贝。
    3. 注意:此功能并不是为了防止意外删除对象而设计。
  21. Logging
    1. 支持Server access logging和object level logging,以跟踪对象的操作和访问。
  22.  事件通知
    1. 删除,增加,修改数据后可以将事件通知到SNS和SQS。
  23. 最佳操作和实践
    1. S3可以使用在混合云的场景,本地存放一部分数据,备份和归档数据存放到S3。
    2. S3可以存放DB索引对应的真实数据,DB存放数据索引,S3存放真实数据。
    3.  S3可以作为静态网站。
    4. 如果每秒访问的请求很多,可以通过Cloud Front缓存数据,或者为对象增加随机hash prefix,这样可以将请求尽可能的分散到不同的设备。

Glacier

  1. Archives
    1. 与S3的Object类似,是归档数据。
    2. 支持0-40TB的大小,自动加密,且不可更改数据,每次创建数据时,会自动生成ID。
  2. Vaults
    1. 与Bucket类似,用于存放archives,默认1000个valuts。
    2. Valuts locks,锁住valuts,防止其它人修改,可指定策略,如:write once read many。
  3. Data Retrieval
    1. 每月可以免费获取5%的数据,更多的数据需要收费。

S3 和 Glacier的区别

S3 Glacier
高可靠,高持久 高可靠,高持久
经常访问的数据 不经常访问的数据
生产数据或归档数据 归档数据
每个对象最大5TB 每个归档最大40TB
可以自定义key 自动生成归档ID
选择加密或不加密 必须加密,且自动加密
可更改对象 不可修改归档数据
可以立即取回数据 3-5小时的取回时间
默认100个bucket 默认1000个vaults

 

你可能感兴趣的:(AWS)