用途
本技能用于管理 Amazon S3 对象存储,提供生产级的安全性、生命周期策略、复制与访问控制配置。适用于以下场景:
- 创建经过安全加固的 S3 存储桶(加密、阻止公共访问、版本控制)
- 编写存储桶策略以强制 HTTPS、限制 IP 范围或授予跨账户访问
- 设置生命周期规则,在存储类之间转换对象
- 配置跨区域复制以实现灾难恢复
- 生成预签名 URL,用于临时访问私有对象
- 设置静态网站托管或 CloudFront 源
- 排查访问被拒错误或策略冲突
前置条件
- 已安装并配置 AWS CLI v2
- IAM 权限:s3:、s3-object-lambda:、kms:*(用于 SSE-KMS)
- 复制场景:具有复制权限的 IAM 角色,以及目标区域的目标存储桶
- 日志场景:具有适当 ACL 的独立日志存储桶
主要能力
创建并加固存储桶
使用 aws s3api create-bucket 创建存储桶(us-east-1 无需 LocationConstraint,其他区域需指定)。随后通过 put-public-access-block 阻止所有公共访问,通过 put-bucket-versioning 启用版本控制,通过 put-bucket-encryption 启用 SSE-KMS 服务端加密,通过 put-bucket-logging 启用访问日志,并通过 put-bucket-tagging 添加标签。
存储桶策略
使用 put-bucket-policy 应用策略,可强制 HTTPS(拒绝非安全传输)、限制为 VPC 终端节点访问,以及配置跨账户访问策略(授予指定 IAM 角色读取权限)。
生命周期规则
使用 put-bucket-lifecycle-configuration 应用生命周期配置,支持:按前缀将对象在 STANDARD_IA、GLACIER_IR、GLACIER、DEEP_ARCHIVE 之间转换;过期日志;清理旧版本;中止未完成的分段上传;过期删除标记。
跨区域复制
使用 put-bucket-replication 启用复制(源和目标存储桶均需启用版本控制),可配置目标存储类、KMS 加密、指标与复制时间控制、删除标记复制以及 SSE-KMS 加密对象的选择条件。可通过 head-object 查询 ReplicationStatus 检查复制状态。
预签名 URL
使用 aws s3 presign 生成下载或上传用的预签名 URL,可设置有效期;也可通过 generate-presigned-url 指定内容类型。
常见 S3 操作
包括 aws s3 sync 同步目录(支持 --delete、--exclude、缓存控制、内容编码)、aws s3 cp 指定存储类复制、aws s3 ls 列出对象并汇总大小、aws s3 rm 递归删除前缀对象,以及通过 CloudWatch 获取存储桶大小。
Terraform 配置
提供 Terraform 资源示例,包括 aws_s3_bucket、版本控制、公共访问阻止、服务端加密、生命周期配置和强制 HTTPS 的存储桶策略。
使用方式
通过 AWS CLI v2 命令或 Terraform 资源定义进行配置。命令示例涵盖存储桶创建、策略应用、生命周期、复制、预签名 URL 和常见对象操作。
适用场景
- 在 AWS 上管理对象存储
- 配置存储桶安全与访问控制
- 设置生命周期与存储类转换以优化成本
- 配置跨区域复制实现灾难恢复
- 生成临时访问链接
- 排查访问被拒、复制失败、生命周期未转换等问题
限制
- 复制要求源和目标存储桶均启用版本控制
- 跨账户访问需同时在存储桶策略和调用方 IAM 策略中授权
- 对象锁定(Governance 或 Compliance 模式)会阻止删除
- 存储桶删除前需清空所有对象和版本
- 大文件上传建议使用自动分段上传
- 预签名 URL 过期或区域不匹配会导致 403
相关技能
- aws-iam:存储桶与对象访问策略
- aws-vpc:用于私有 S3 访问的 VPC 终端节点
- aws-cost-optimization:存储类优化
- terraform-aws:S3 的 IaC 部署
- cloudformation:AWS 原生 S3 模板