EFS 安装因 mount.nfs4 失败:服务器拒绝访问

EFS mount failing with mount.nfs4: access denied by server

正在尝试装载 EFS 文件系统。我唯一更改的是删除使用 EFS 组创建的默认 SG,并将其替换为我的 EC2 实例已经在其中的自定义 SG。

AWS 提供了安装 NFS 共享的必要命令,它应该逐字工作。通常是这样。但有时你会得到这个:

mount.nfs4: access denied by server while mounting fs-xxxxxxxx.efs.us-west-2.amazonaws.com:/

遗憾的是,故障排除文档在 "Action to Take" 标题下说:

If you are attempting to mount the file system using IAM...

...并且对如何操作的建议绝对为零,您没有尝试使用 IAM 安装 FS。

现在首先,我很确定我没有做错什么,因为我已经使用了数十次将 EFS (NFS) 共享挂载到 EC2 实例的剧本,它们现在已经非常完善了.那为什么有时会失败呢?

事实证明,AWS 并不总是像通常感觉的那样灵活,有时后端会出现问题。在这种情况下,替换 SG 可能实际上在 UI 中似乎有效,但在后端没有生效。我只是猜测。

我所做的只是删除现有的 EFS 并创建完全相同的 EFS。这次我唯一不同的是在创建 EFS 时设置我的自定义 EFS SG,而不是在创建和中提琴后替换它,我的剧本又开始工作了。

我绝对没有直观的(或记录的)理由,为什么从非默认 SG 开始应该与替换它有任何不同,当它是完全相同的 SG 时。在任何一种情况下,您都将 EFS 设置为使用您选择的 SG,并且 EFS 不反对。此外,我以前没有遇到任何问题。所以我把这归结为 EFS/SG 后端搞砸了,浪费了很多时间进行故障排除。

总而言之,如果 new EFS 共享在尝试标准挂载时给您带来 mount.nfs4: access denied by server 错误(并且您知道您正在正确执行其他所有操作)-只需删除它并重新创建它即可。不要一定假设您做错了什么,AWS 服务不会时不时地搞砸。

我在尝试通过访问点访问时 EFS 上的目录不存在时收到此错误消息。

对我来说,问题是我有一个策略要求对驱动器进行传输加密,而实例创建向导创建了一个错误的 /etc/fstab 条目。

  1. 政策要求使用 tls 安装驱动器。此处给出了相关说明:https://docs.aws.amazon.com/efs/latest/ug/mounting-fs-mount-helper-ec2-linux.html,如果您使用挂载助手,并指定 -o tls。
  2. 实例创建向导创建的 /etc/fstab 没有执行正确的挂载。事实上,同一页面上的“使用 NFS 客户端”选项等同于创建的错误条目。

传输中加密的正确 /etc/fstab 条目如下所示:

fs-0123456789abcdef0:/ /mnt/fs-1 efs tls,_netdev 0 0

我遇到了类似的问题并遵循了 StartupGuy 的步骤。这并没有特别解决我的问题,所以我跟踪了云跟踪事件并意识到访问策略也需要具有装载访问权限。

这是 fs-policy 的默认操作:

             ...
             "Action": [
                "elasticfilesystem:ClientRootAccess",
                "elasticfilesystem:ClientWrite"
            ]
            ...

您还需要将 "elasticfilesystem:ClientMount" 添加到 fs 策略。