在mount时aws efs连接超时

pma*_*ann 20 amazon-ec2 amazon-web-services

我正在按照教程在AWS EC2实例上安装efs,但是当我执行mount命令时

sudo mount -t nfs4 -o vers=4.1 $(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone).[EFS-ID].efs.[region].amazonaws.com:/ efs
Run Code Online (Sandbox Code Playgroud)

我每次都要连接时间.

mount.nfs4: Connection timed out
Run Code Online (Sandbox Code Playgroud)

这可能是什么问题?

提前致谢!

Sco*_*ers 29

我发现这里接受的答案是不正确和不安全的,上面的宝的答案非常接近 - 除了你的EC2(挂载目标)安全组不需要NFS Inbound.您只需要为EC2分配一个安全组(即使没有规则),这样您的EFS安全组就可以限制在该安全组中......您知道,为了安全起见!这是我发现的作品:

  • 为EC2实例创建新的安全组.将其命名EFS Target,并将所有规则留空
  • 为EFS Mount创建新的安全组.将其命名EFS Mount,并在此添加inboundNFS规则.将此规则的SOURCE设置为EFS Target您在上面创建的安全组.这会将EFS限制为仅能够连接到已EFS Mount分配安全组的EC2实例(请参阅下文).如果您不担心这一点,可以从"源"下拉列表中选择"任意",它的工作方式相同,但不增加安全级别
  • 转到EC2控制台,并将该EFS Target组添加到您的EC2实例,假设您正在添加额外的安全性
  • 转到EFS控制台,选择您的EFS并选择"管理文件系统访问"
    • 对于每个EFS装载目标(可用区域),您需要添加EFS Mount安全组并删除VPC默认组(如果尚未添加)
  • AWS文档中的mount命令现在可以正常工作

我不喜欢他们如何在EC2作为装载目标方面混合白话,而且EFS还为每个可用区域提供单独的装载目标.使他们的文档非常混乱,但按照上述步骤允许我在Ubuntu服务器上安全地安装EFS.

  • 伟大的工作Scott.这应该是公认的答案.根据您的意愿弯曲安全组的好方法. (2认同)

小智 18

将NFS和端口2049的类型添加到运行EC2实例和EFS的安全组的Inbound.这个对我有用.

  • 这是正确的答案.对于您的EC2实例安全组,使用EFS所在的安全组的源添加Type NFS(它已经配置为端口2049)并且它开始工作.如上面的答案所示,将端口22公开是不必要的,并且在很多情况下不是一个好主意,并且不能解决问题. (2认同)