AWS S3



一、基础概念

  1. 存储桶(Bucket)
  2. 全局唯一名称(小写字母/数字开头,3-63字符,非IP格式)
  3. 区域级定义,存储策略和权限的容器

  4. 对象(Object)

  5. 键(Key):对象唯一标识(相对路径)
  6. 值(Value):实际数据(任意类型)
  7. 元数据(Metadata):描述性键值对(如创建时间、类型)
  8. 版本ID:启用版本控制后唯一标识(默认null

二、存储类别(Storage Classes)

类别 适用场景 访问延迟 成本
S3 Standard 频繁访问数据(大数据、实时应用) 毫秒级 最高
S3 Intelligent 访问模式不确定的数据 自动分层优化 动态调整
S3 Standard-IA 不频繁访问但需即时检索的数据(灾备) 毫秒级
S3 One Zone-IA 可重建的非关键数据(单AZ存储) 毫秒级 低于Standard-IA
Glacier Instant 需即时访问的归档数据 毫秒级
Glacier Flexible 很少访问的长期数据(免费批量检索) 分钟级 很低
Glacier Deep Archive 最低成本的长期归档(数字保存) 12小时 最低

🚫 转换限制
- 不可转至S3 Standard
- Intelligent-Tiering不可转至Standard-IA
- One Zone-IA不可转至Glacier/Intelligent-Tiering


三、数据管理

  1. 版本控制(Versioning)
  2. 防覆盖:每个对象保留多个版本
  3. 恢复:可回滚至任意历史版本
  4. 暂停后仍保留旧版本

  5. 生命周期策略(Lifecycle Rules)

  6. 转换动作:自动迁移存储类别(如60天后转Standard-IA)
  7. 过期动作:自动删除旧数据(如365天后删除日志)
  8. 支持前缀(s3://bucket/docs/*)和标签过滤

  9. 对象锁定(Object Lock)

  10. 合规模式:强制保留期内禁止删除/修改(连root也无法操作)
  11. 治理模式:管理员可申请提前解锁

  12. 跨区域复制(Replication)

  13. 要求:源/目标桶均启用版本控制+IAM权限
  14. CRR:跨区域合规/低延迟访问
  15. SRR:同区域日志聚合/生产测试同步
  16. 注意:仅复制新对象;删除标记可选复制;非传递性(A→B→C ≠ A→C)

四、性能优化

  1. 传输加速(Transfer Acceleration)
  2. 通过Edge Location加速全球上传
  3. 兼容分块上传(Multipart Upload)

  4. 高性能实践

  5. 基准:3500次写/5500次读(每秒每前缀)
  6. 分块上传:>100MB文件必用,>5GB强制使用
  7. S3 Select:SQL过滤对象内容(减少网络传输)
  8. 字节范围获取:并行下载部分文件(断点续传/媒体播放)

  9. 批量操作(Batch Operations)

  10. 基于清单(Inventory)+S3 Select过滤
  11. 自动重试+进度跟踪+报告生成

五、安全机制

  1. 加密
  2. 传输中:TLS/SSL加密
  3. 静态加密

    • SSE-S3:AES-256(S3托管密钥)
    • SSE-KMS:AWS KMS管理密钥(审计支持)
    • SSE-C:用户自管密钥(每次请求携带)
    • 客户端加密:数据在本地加密后上传
  4. 访问控制

  5. IAM策略:用户级API权限控制
  6. 桶策略(Bucket Policy):JSON格式(如强制加密、跨账号访问)
  7. ACL:旧式对象级权限(已不推荐)
  8. 预签名URL:临时访问凭证(CLI生成下载/SDK生成上传)

  9. 高级防护

  10. Block Public Access:一键禁止公开访问
  11. MFA-Delete:强制MFA验证删除/停用版本控制(仅CLI配置)
  12. CORS:配置跨域资源共享规则(如允许特定域名访问资源)

六、监控与集成

  1. 事件通知(Event Notification)
  2. 触发源:对象创建/删除/还原
  3. 目标:SQS/SNS/Lambda/EventBridge
  4. EventBridge:支持高级过滤(JSON规则)+多目标路由

  5. Glacier专用功能

  6. Select:直接检索归档中的特定数据
  7. 不可变性:存档后不可修改

关键注意事项

  1. 存储桶命名勿用大写或下划线
  2. 复制不传递(A→B→C ≠ A→C)
  3. 分析报告(Storage Class Analysis)需24-48小时初始化
  4. 深度归档(Deep Archive)检索需12小时