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

如何通过AWS CloudFormation在EFS中创建挂载前可用的初始文件夹

问题解答

可以实现该需求,原生CloudFormation没有直接在EFS根目录批量创建文件夹的参数,但可以通过两种成熟方案实现:

方案1:扩展你当前使用的EFS访问点(更简单,推荐带权限隔离的场景)

你模板中已经用到的AWS::EFS::AccessPoint资源本身就具备自动创建目录的能力:当你配置RootDirectory.Path和CreationInfo参数时,CloudFormation创建访问点的同时会自动在EFS中创建对应路径的文件夹,并且按配置设置所有者和权限。
如果需要创建多个初始文件夹,只需要新增多个AWS::EFS::AccessPoint资源,每个资源对应一个你要创建的目录路径即可。

你现有代码的修正点:

你当前模板中PosixUser的Uid和Gid参数需要填写数字ID,不能直接填用户名ec2-user,ec2-user的默认UID/GID为1000,对应修改为:

"PosixUser": {
  "Uid": "1000",
  "Gid": "1000"
}

多文件夹创建示例:

比如你需要额外创建/ap2目录,只需要在Resources下新增第二个访问点资源:

"AccessPointResource2": {
  "Type": "AWS::EFS::AccessPoint",
  "Properties": {
    "FileSystemId": {
      "Ref": "FileSystem"
    },
    "PosixUser": {
      "Uid": "1000",
      "Gid": "1000"
    },
    "RootDirectory": {
      "CreationInfo": {
        "OwnerGid": "0",
        "OwnerUid": "0",
        "Permissions": "0744"
      },
      "Path": "/ap2"
    }
  }
}

方案2:Lambda-backed自定义资源(更灵活,适合无访问点绑定需求的场景)

如果你不需要创建访问点,只是要在EFS根目录下创建任意多个文件夹,可以通过CloudFormation自定义资源实现:

  • 编写Lambda函数,配置VPC权限可以访问EFS,函数逻辑为挂载EFS后执行mkdir命令创建所有需要的初始文件夹
  • 在CloudFormation模板中添加该Lambda作为自定义资源,设置依赖EFS、EFS挂载目标创建完成后再执行
  • 该方案还支持额外的初始化操作,比如写入初始配置文件、修改全局权限等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:54:03