SuperAPI AI 工具集

aws-s3

部署与运维

查看项目

更新于 10-15 12:50

技能介绍

用途

本技能用于管理 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 模板