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
- Server 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 的上传下载