关于 aws-cloudformation-s3
面向使用 CloudFormation 管理 Amazon S3 的开发者,提供存储桶、策略、版本控制和生命周期规则的配置指引。还涵盖模板参数、条件与跨堆栈输出。
主要功能
- 01配置 S3 存储桶属性
- 02设置存储桶策略和访问控制
- 03配置版本控制与生命周期规则
- 04设置 CORS 和跨堆栈输出
- 05验证并部署模板
适用场景
- 01创建带加密和版本控制的存储桶
- 02按策略控制存储桶访问
- 03配置对象分层和过期规则
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ giuseppe-trisciuoglio/ developer-kit --skill aws-cloudformation-s3安装后在 Claude Code 中输入/aws-cloudformation-s3确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/advanced-configuration.mdcomplete-examples.mdexamples.mdreference.md详细介绍
AWS CloudFormation S3 模式
提供 S3 存储桶配置、策略、版本控制、生命周期规则,以及 CloudFormation 模板结构最佳实践,助力构建可用于生产环境的基础设施。
适用场景
- 创建自定义配置的 S3 存储桶
- 实施存储桶策略以控制访问权限
- 配置 S3 版本控制以保护数据
- 设置生命周期规则以管理数据
- 创建 Outputs 供跨堆栈引用
- 使用 AWS 专用类型的 Parameters
- 使用 Mappings 和 Conditions 组织模板
概述
提供 S3 存储桶配置、策略、版本控制、生命周期规则,以及适用于生产环境的 CloudFormation 模板结构。
使用说明
- 定义存储桶资源:创建包含版本控制、加密和 PublicAccessBlock 的
AWS::S3::Bucket - 配置存储桶策略:设置 IAM 策略以控制访问权限
- 设置生命周期规则:定义转换和过期策略
- 配置 CORS:按需允许跨源请求
- 添加 Outputs:导出存储桶名称/ARN,供跨堆栈引用
部署前验证:
aws cloudformation validate-template --template-body file://template.yaml
部署失败时回滚:
aws cloudformation deploy \
--template-file template.yaml \
--stack-name my-s3-stack \
--capabilities CAPABILITY_IAM
如果部署失败,CloudFormation 会自动回滚。使用以下命令检查失败原因:
aws cloudformation describe-stack-events --stack-name my-s3-stack
快速参考
| 资源类型 | 用途 |
|---|---|
AWS::S3::Bucket | 创建 S3 存储桶 |
AWS::S3::BucketPolicy | 设置存储桶级策略 |
AWS::S3::BucketReplication | 跨区域复制 |
| Parameters | 自定义输入值 |
| Mappings | 静态配置表 |
| Conditions | 有条件地创建资源 |
| Outputs | 返回值,供跨堆栈引用 |
示例
基本 S3 存储桶
Resources:
DataBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: my-data-bucket
启用版本控制和加密的存储桶
DataBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: !Sub "${AWS::StackName}-data"
VersioningConfiguration:
Status: Enabled
BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
SSEAlgorithm: AES256
PublicAccessBlockConfiguration:
BlockPublicAcls: true
BlockPublicPolicy: true
生命周期规则
DataBucket:
Type: AWS::S3::Bucket
Properties:
LifecycleConfiguration:
Rules:
- Id: ArchiveOldData
Status: Enabled
Transitions:
- StorageClass: GLACIER
TransitionInDays: 365
存储桶策略
BucketPolicy:
Type: AWS::S3::BucketPolicy
Properties:
Bucket: !Ref DataBucket
PolicyDocument:
Statement:
- Effect: Allow
Principal:
AWS: !Ref RoleArn
Action:
- s3:GetObject
Resource: !Sub "${DataBucket.Arn}/*"
更完整的示例(包括 CORS、静态网站、复制和适用于生产环境的配置),请参阅 references/complete-examples.md。
模板结构
模板部分
AWSTemplateFormatVersion: 2010-09-09
Description: Template description
Mappings: {} # Static configuration tables
Metadata: {} # Additional information
Parameters: {} # Input values
Conditions: {} # Conditional creation
Transform: {} # Macro processing
Resources: {} # AWS resources (REQUIRED)
Outputs: {} # Return values
Parameters
Parameters:
BucketName:
Type: String
Description: S3 bucket name
Default: my-bucket
MinLength: 3
MaxLength: 63
AllowedPattern: '^[a-z0-9-]+$'
Conditions
Conditions:
IsProduction: !Equals [!Ref Environment, prod]
ShouldEnableVersioning: !Equals [!Ref EnableVersioning, 'true']
Resources:
DataBucket:
Type: AWS::S3::Bucket
Properties:
VersioningConfiguration:
Status: !If [ShouldEnableVersioning, Enabled, Suspended]
Outputs
Outputs:
BucketName:
Description: Name of the S3 bucket
Value: !Ref DataBucket
Export:
Name: !Sub '${AWS::StackName}-BucketName'
有关 Mappings、Conditions、Parameters 和跨堆栈引用的详细信息,请参阅 references/advanced-configuration.md。
最佳实践
- 阻止公共访问:非静态网站存储桶始终启用此功能
- 版本控制:为关键数据启用版本控制,以防意外删除
- 存储桶策略:使用存储桶策略而非 ACL 控制访问权限
- 生命周期规则:通过分层存储实现成本优化
- 加密:启用默认加密(SSE-KMS 或 AES256)
- 标签:为所有资源添加标签,以便组织管理和分摊成本
- Outputs:导出存储桶名称/ARN,供跨堆栈引用
- Parameters:使用参数,以便在不同环境中重复使用
常见问题排查
存储桶已存在:使用包含 CloudFormation 堆栈名称的唯一存储桶名称 访问被拒绝:检查存储桶策略和 IAM 权限 版本控制冲突:对象存在后无法暂停版本控制 生命周期规则未生效:检查规则状态和前缀筛选条件 跨堆栈引用:确保先导出 Outputs,再进行导入
相关技能
- aws-cloudformation-security - S3 安全最佳实践
- aws-cloudformation-lambda - 用于 S3 事件的 Lambda 触发器
- aws-cloudformation-iam - 用于访问 S3 的 IAM 角色
参考资料
完整示例
- references/complete-examples.md - 基本存储桶、版本控制、生命周期、CORS、策略、生产环境堆栈、事件通知、静态网站、复制
高级配置
- references/advanced-configuration.md - 参数、映射、条件、输出、元数据、DeletionPolicy、DependsOn、Transform
限制和警告
- 存储桶名称:必须全局唯一(在所有 AWS 账户中)
- 版本控制:存储桶中存在对象后,无法暂停版本控制
- 生命周期规则:过期时间最短为 1 天,转换时间最短为 0 天
- 存储桶策略:大小限制为 20 KB
- 公共访问:默认阻止;需要显式配置
- CORS:每个存储桶最多 100 条规则
- 复制:必须在源和目标存储桶上启用版本控制
- 加密:KMS 密钥必须与存储桶位于同一区域
- 标签:每个资源最多 50 个标签
- 堆栈限制:CloudFormation 限制每个堆栈中的资源数量(默认 200 个)
评论
支持 Markdown