AWS 学习笔记之 S3

S3 101 Tips

  • S3 是一个对象存储(Object-based Storage),比如,用于上传文件
  • 文件大小可以从 0 到 5 TB
  • 无限存储容量
  • 文件存在 Bucket 里
  • S3 Bucket 是全局的 namespace,也就是说所有的 S3 Bucket 都不能有同名
  • 一个 S3 bucket URL 的例子:https://s3-us-east-1.amazonaws.com/bucketname

一致性模型:

  • 对 PUT 的新文件,具有 Read-after-write 一致性
  • 对于覆盖 PUT 和删除 DELETE,只保证最终一致性(Eventual Consistency),即这个操作需要一些时间生效

S3 Storage 有不同的 Classes / Tiers

  • S3:持久性,随时可用,经常访问
  • S3 - IA (Infrequent Access):持久性,随时可用,不经常访问
  • S3 - Reduced Redundancy Storage:通常用于很容易重新产生的文件,比如缩略图
  • Glacier:非常便宜,用于存档数据(Archived Data),访问前可能需要 3-5 个小时来取出文件
Standard Standard - Infrequent Access Reduced Redundancy Storage
Durability 99.999999999% 99.999999999% 99.99%
Availability 99.99% 99.9% 99.99%
Concurrent facility fault tolerance 2 2 1
SSL support Yes Yes Yes
First byte latency Milliseconds Milliseconds Milliseconds
Lifecycle Management Policies Yes Yes Yes

S3 Object的基本点:

  • Key(文件名)
  • Value (数据)
  • Version ID
  • Metadata
  • Subresources
    • ACL (Access Control List)
    • Torrent (BitTorrent 种子)

其它:

  • 注意!S3 是对象存储,不能用于安装操作系统(和 Block Storage 不同)
  • 成功的上传会返回 HTTP 200
  • 可以启用 Multipart uploading 加快速度
  • 考前一定要阅读 S3 FAQ !经常考!

S3 - Versioning

  • 保存一个object的所有版本,即使删除(删除只是增加了一个Deleting Mark,并非真的删除)
  • 是个很好的备份工具
  • 一旦启用,无法再停下(disable),只能暂停(suspended)
  • 和 Lifecycle Rules 集成
  • MFA Delete 功能,要求通过 Multi-factor Authentication才能删除
  • Cross Region Replication 也要求源和目标 bucket 都要开启Versioning

S3 - Lifecycle Management

  • 可以和 Versioning 结合使用,也可以不结合
  • 可以用于 current version 和 previous version
  • 可以做以下操作:
    • 变成 Standard IA (Infequent Access) (128KB, 30 days after)
    • 存档到 Glacier (30 days after IA)
    • 永久删除

CloudFront CDN

  • Edge Location:内容被缓存的地方,和AWS Region/AZ无关
  • Origin - CDN 分发内容的源,可以是 S3 bucket, EC2 Instance, Elastic Load Balancer 或 Route53
  • Distribution - 给CDN的名字,包含一系列 Edge Locations
    • Web Distribution - 通常用于网站
    • RTMP - 用于流媒体
  • Edge Location 不止能 READ,也能写入(比如PUT)
  • Object 被缓存的时间叫 TTL,默认 24h
  • 你可以手工清除缓存的文件,但是要收费

S3 - Security

  • 默认情况下,新的 bucket 是 Private 的
  • 你可以设置访问控制,用:
    • Bucket Policies
    • Access Control Lists
  • S3 Bucket 可以设置 log 下所有请求,存到另一个bucket里去

S3 - Encryption

  • In transit (SSL / TLS)
  • At Rest:
    • Server Side Encrytion
      • S3 自己Key (SSE-S3)
      • AWS KMS 管理的Key (SSE-KMS)
      • Server Side Encryion 用客户提供的Key(SSE-C)
    • Client Side Encrytion

Storage Gateway

  • File Gateway: For flat files,直接存储在 S3,本地缓存
  • Volume Gateway: Block storage
    • Cached Volume: 数据在 S3,本地缓存最近访问的文件
    • Stored Volume: 数据存在本地(on-premise),定期备份到 S3
  • Gateway Virtual Tape Library (VTL): 作为虚拟磁带设备,用来备份

Snowball

有以下几种产品:

  • Snowball
  • Snowball Edge: 包含计算功能
  • Snowmobile: 一卡车PB数据

功能:

  • 前身是 Import Export Service
  • 能用来:
    • Import to S3
    • Export from S3

S3 Transfer Accelaraion

利用 CloudFront 加速 S3 的上传下载