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

如何通过Terraform将AWS EFS访问点挂载到EC2实例?

EFS访问点目录不存在、权限报错问题修复方案

1. 先验证挂载有效性

执行以下命令确认EFS是否正常挂载:

  • 查看挂载文件系统列表:df -h,确认输出中存在对应EFS的挂载条目
  • 查看NFS挂载参数:mount | grep nfs4,确认挂载目标路径匹配你配置的/home/ubuntu/mount-point

2. 最常见遗漏:未挂载指定访问点

你当前使用的默认mount -t nfs4命令是挂载EFS的根文件系统,而非你在Terraform中配置的aws_efs_access_point对应的逻辑路径,访问点的/access是逻辑映射路径,不会直接出现在EFS根目录下。
挂载访问点需要指定访问点ID参数,正确挂载命令格式如下:

sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport,accesspoint=<你的EFS访问点ID> <EFS文件系统DNS>:/ /home/ubuntu/mount-point

3. 访问点配置遗漏自动创建目录参数

如果已经挂载访问点还是报错,检查你的Terraformaws_efs_access_point资源是否缺失root_directory.creation_info配置。该配置用于告知EFS自动创建根目录并设置权限,没有该配置则不会自动生成/access目录,也不会分配对应权限,参考正确配置:

resource "aws_efs_access_point" "lambda_packages" {
  file_system_id = aws_efs_file_system.shared.id

  # 配置为和你EC2上操作的ubuntu用户一致的UID/GID,默认ubuntu用户UID/GID均为1000
  posix_user {
    gid = 1000
    uid = 1000
  }

  root_directory {
    path = "/access"
    # 必须配置该块才会自动创建目录并设置权限
    creation_info {
      owner_gid   = 1000
      owner_uid   = 1000
      permissions = "0755"
    }
  }
}

4. 安全组规则校验

  • 确认EC2实例的出站安全组开放了NFS协议的2049端口
  • 确认EFS挂载目标的入站安全组开放了来自EC2所属安全组的2049端口入站规则
    规则缺失会导致静默挂载失败,出现目录无内容、无权限的报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:39:00