You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AWS CloudFormation在S3存储桶中创建子文件夹?

在CloudFormation中为S3桶创建子文件夹的实现方法

首先要明确:AWS S3没有真正的文件夹结构,所谓的“子文件夹”是通过带/后缀的空对象模拟出来的。CloudFormation无法直接创建“文件夹”,但可以通过以下两种方式实现需求:

方案一:通过CloudFormation创建空对象模拟文件夹

直接在现有模板中添加AWS::S3::Object资源,创建以/结尾的空对象,S3控制台会将其识别为文件夹。

修改后的完整模板示例:

Resources:
  myS3Bucket:
    Type: AWS::S3::Bucket
    DeletionPolicy: Retain
    Properties:
      BucketName : Test1
      PublicAccessBlockConfiguration:
        BlockPublicAcls: true
        IgnorePublicAcls: true
        BlockPublicPolicy: true
        RestrictPublicBuckets: true

  # 模拟创建subfolder1
  Subfolder1:
    Type: AWS::S3::Object
    Properties:
      Bucket: !Ref myS3Bucket
      Key: subfolder1/
      ContentLength: 0

  # 模拟创建subfolder2
  Subfolder2:
    Type: AWS::S3::Object
    Properties:
      Bucket: !Ref myS3Bucket
      Key: subfolder2/
      ContentLength: 0

说明:

  • Key字段以/结尾是关键,这是S3识别为“文件夹”的标志
  • ContentLength: 0表示创建的是空对象,不会占用额外存储

方案二:在CI/CD流水线中用AWS CLI创建

如果CloudFormation模板中不想添加额外资源,可以在CI/CD流水线的后续步骤中,通过AWS CLI命令创建这些模拟文件夹的空对象。

示例命令:

# 创建subfolder1
aws s3api put-object --bucket Test1 --key subfolder1/
# 创建subfolder2
aws s3api put-object --bucket Test1 --key subfolder2/

注意事项:

  • 执行命令的CI/CD角色需要具备S3:PutObject权限
  • 如果桶名是动态生成的(而非硬编码Test1),可以从CloudFormation输出中获取桶名传入命令

内容的提问来源于stack exchange,提问作者Manika

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 13:33:10