通过EC2连接网络驱动器报错FileNotFoundError,有哪些可行解决方案?
问题原因
你遇到的FileNotFoundError报错核心原因是你指定的网络驱动器路径没有被正确挂载到EC2实例的本地文件系统,EC2无法识别该路径,所以遍历文件失败。
EC2连接网络驱动器的解决方法
若网络驱动器为AWS EFS
- 确认EC2与EFS处于同一VPC,且EFS安全组开放2049端口的入站规则,允许EC2的安全组访问
- 安装NFS客户端:
- Amazon Linux/CentOS 执行:
sudo yum install nfs-utils -y - Ubuntu/Debian 执行:
sudo apt install nfs-common -y
- Amazon Linux/CentOS 执行:
- 新建本地挂载目录:
sudo mkdir /mnt/efs - 执行挂载操作:
sudo mount -t nfs4 <EFS的DNS地址>:/ /mnt/efs - 如需开机自动挂载,将以下内容写入
/etc/fstab文件:<EFS的DNS地址>:/ /mnt/efs nfs4 defaults 0 0 - 替换你的Python代码中
data_folder的取值为挂载路径下的对应目录,直接写绝对路径即可,无需拼接os.getcwd()
若网络驱动器为本地IDC的SMB/NFS共享盘
- 先打通EC2与本地IDC的网络链路,可选择AWS Direct Connect或者IPsec VPN
- 对应安装SMB客户端(
sudo yum install cifs-utils或sudo apt install cifs-utils)或NFS客户端,按照共享盘的认证规则完成挂载即可
替代的AWS原生服务方案(无需自行维护脚本和EC2)
- AWS DataSync:官方数据同步服务,支持本地SMB/NFS共享盘、EFS、FSx系列、S3等多种存储端,直接在控制台配置源端(你的网络驱动器)、目标端(S3桶)和同步规则,即可实现全量/增量同步、定时同步,可靠性远高于自行开发的脚本
- S3 Mountpoint:如果你的需求是直接在EC2上读写S3内容,可以用该工具将S3桶直接挂载到EC2本地路径,直接操作挂载路径下的文件就会自动同步到S3,无需编写上传代码
- 如果你使用的是AWS托管的文件存储(如FSx for Windows File Server、FSx for Lustre),可直接在存储配置页面开启自动导出到S3的功能,无需额外开发
内容的提问来源于stack exchange,提问作者user14113400
相关产品推荐
相关产品推荐

