Skip to content
返回云服务

AWS S3 对象存储深入

可扩展对象存储,11 个 9 持久性、生命周期分层和事件通知。

AWS进阶

为什么

S3 存万亿对象、11 个 9 持久性 — 数据丢失几乎不可能。生命周期规则自动分层到 Glacier(便宜 90%),事件触发 Lambda 处理。免费:5GB + 2 万请求。

何时使用

用于上传、备份、静态托管、数据湖和日志。避免事务数据(用 DB)或频繁小读(每对象延迟)。

如何做

1. 创建 bucket — aws s3 mb s3://my-bucket(全局唯一名) 2. 上传 — aws s3 cp file.txt s3://my-bucket/(或 sync 同步目录) 3. 版本控制 — 启用防误删,用 --version-id 恢复 4. 生命周期 — 转 IA(30天)、Glacier(90天)、Deep Archive(180天) 5. 加密 — 默认 SSE-S3,或 SSE-KMS 控制密钥 6. 静态托管 — bucket + index.html,前置 CloudFront 做 HTTPS 7. 事件 — S3 → SQS/SNS/Lambda on PUT,异步处理上传 8. 预签名 URL — 生成供客户端直传,无需代理

示例

# 生命周期:旧日志自动分层到 Glacier aws s3api put-bucket-lifecycle-configuration --bucket my-logs --lifecycle-configuration '{ "Rules": [{ "Id": "tier-logs", "Status": "Enabled", "Transitions": [ {"Days": 30, "StorageClass": "STANDARD_IA"}, {"Days": 90, "StorageClass": "GLACIER"} ], "Expiration": {"Days": 365} }] }' // 预签名 URL 供浏览器直传 import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3"; import { getSignedUrl } from "@aws-sdk/s3-request-presigner"; const url = await getSignedUrl(s3, new PutObjectCommand({ Bucket: "my-bucket", Key: "uploads/photo.jpg" }), { expiresIn: 3600 });

常见问题

  • ⚠bucket 意外公开 — 账户级 Block Public Access 防止
  • ⚠Glacier 取回慢 — Standard 3-5 小时,紧急用 Expedited(1-5 分钟)更贵
  • ⚠跨区域出口费 — 复制到另一区域收 $0.02/GB

最佳实践

  • ✓账户级启用 Block Public Access — 防止任何 bucket 公开
  • ✓访问模式未知用 Intelligent-Tiering — 自动移冷对象,小额费
  • ✓S3 前置 CloudFront — 边缘缓存,读多负载出口减 90%

常见问题解答

什么是AWS S3 对象存储深入?它解决什么问题?

可扩展对象存储,11 个 9 持久性、生命周期分层和事件通知。 它可帮助开发者在不自建基础设施的前提下完成部署、存储与扩展,是云服务选型的核心参考。

如何在 5 分钟内上手AWS S3 对象存储深入?

两步即可跑通:① 创建 bucket — aws s3 mb s3://my-bucket(全局唯一名);② 上传 — aws s3 cp file.txt s3://my-bucket/(或 sync 同步目录)。建议先用免费套餐验证流程,再接入生产环境。

AWS S3 对象存储深入 最容易踩的坑是什么?

最高频的问题是:bucket 意外公开 — 账户级 Block Public Access 防止。建议在上线前用 checklist 逐项核对,并在 CI 中加入策略与配置扫描。

AWS S3 对象存储深入 的最佳实践有哪些?

AWS S3 对象存储深入 的最佳实践包括:账户级启用 Block Public Access — 防止任何 bucket 公开;访问模式未知用 Intelligent-Tiering — 自动移冷对象,小额费;S3 前置 CloudFront — 边缘缓存,读多负载出口减 90%。其中首条「账户级启用 Block Public Access — 防止任何 bucket 公开」应作为团队默认规范写入 IaC 模板。

AWS S3 对象存储深入 如何控制成本与避免账单意外?

三招防超支:① 为所有资源打 env/team 标签并启用账单告警;② 用预算阈值触发 Slack/邮件通知;③ 定期用 Cost Explorer 审查闲置资源并清理。AWS S3 对象存储深入 多数提供免费套餐,先在免费额度内验证再放量。