mcpField
A
aws-cloudformation-s3

aws-cloudformation-s3

github.com/giuseppe-trisciuoglio云与 DevOps36567 次安装7 周前更新
代码仓库

关于 aws-cloudformation-s3

面向使用 CloudFormation 管理 Amazon S3 的开发者,提供存储桶、策略、版本控制和生命周期规则的配置指引。还涵盖模板参数、条件与跨堆栈输出。

主要功能

  1. 01配置 S3 存储桶属性
  2. 02设置存储桶策略和访问控制
  3. 03配置版本控制与生命周期规则
  4. 04设置 CORS 和跨堆栈输出
  5. 05验证并部署模板

适用场景

  1. 01创建带加密和版本控制的存储桶
  2. 02按策略控制存储桶访问
  3. 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.md
complete-examples.md
examples.md
reference.md

详细介绍

AWS CloudFormation S3 模式

提供 S3 存储桶配置、策略、版本控制、生命周期规则,以及 CloudFormation 模板结构最佳实践,助力构建可用于生产环境的基础设施。

适用场景

  • 创建自定义配置的 S3 存储桶
  • 实施存储桶策略以控制访问权限
  • 配置 S3 版本控制以保护数据
  • 设置生命周期规则以管理数据
  • 创建 Outputs 供跨堆栈引用
  • 使用 AWS 专用类型的 Parameters
  • 使用 Mappings 和 Conditions 组织模板

概述

提供 S3 存储桶配置、策略、版本控制、生命周期规则,以及适用于生产环境的 CloudFormation 模板结构。

使用说明

  1. 定义存储桶资源:创建包含版本控制、加密和 PublicAccessBlock 的 AWS::S3::Bucket
  2. 配置存储桶策略:设置 IAM 策略以控制访问权限
  3. 设置生命周期规则:定义转换和过期策略
  4. 配置 CORS:按需允许跨源请求
  5. 添加 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。

最佳实践

  1. 阻止公共访问:非静态网站存储桶始终启用此功能
  2. 版本控制:为关键数据启用版本控制,以防意外删除
  3. 存储桶策略:使用存储桶策略而非 ACL 控制访问权限
  4. 生命周期规则:通过分层存储实现成本优化
  5. 加密:启用默认加密(SSE-KMS 或 AES256)
  6. 标签:为所有资源添加标签,以便组织管理和分摊成本
  7. Outputs:导出存储桶名称/ARN,供跨堆栈引用
  8. Parameters:使用参数,以便在不同环境中重复使用

常见问题排查

存储桶已存在:使用包含 CloudFormation 堆栈名称的唯一存储桶名称 访问被拒绝:检查存储桶策略和 IAM 权限 版本控制冲突:对象存在后无法暂停版本控制 生命周期规则未生效:检查规则状态和前缀筛选条件 跨堆栈引用:确保先导出 Outputs,再进行导入

相关技能

参考资料

完整示例
  • references/complete-examples.md - 基本存储桶、版本控制、生命周期、CORS、策略、生产环境堆栈、事件通知、静态网站、复制
高级配置

限制和警告

  • 存储桶名称:必须全局唯一(在所有 AWS 账户中)
  • 版本控制:存储桶中存在对象后,无法暂停版本控制
  • 生命周期规则:过期时间最短为 1 天,转换时间最短为 0 天
  • 存储桶策略:大小限制为 20 KB
  • 公共访问:默认阻止;需要显式配置
  • CORS:每个存储桶最多 100 条规则
  • 复制:必须在源和目标存储桶上启用版本控制
  • 加密:KMS 密钥必须与存储桶位于同一区域
  • 标签:每个资源最多 50 个标签
  • 堆栈限制:CloudFormation 限制每个堆栈中的资源数量(默认 200 个)

评论

支持 Markdown