为什么我无法在 AWS Fargate 任务上挂载我的 Amazon EFS 卷?

上次更新时间:2022 年 3 月 21 日

当我在 AWS Fargate 任务上挂载 Amazon Elastic File System(Amazon EFS)卷时出现错误。

解决方法

Amazon EFS 为 Fargate 任务提供了持久性存储解决方案,以在不同的任务之间共享文件和数据。

如果出现下面的一个或多个原因,您可能会无法在 Fargate 任务上挂载 Amazon EFS 卷:

  • Amazon EFS 文件系统配置不正确。
  • Amazon Elastic Container Service(Amazon ECS)任务 IAM 角色不具有所需的权限。
  • 存在网络和 Amazon Virtual Private Cloud(Amazon VPC)配置相关问题。

当您尝试在 Fargate 任务上挂载 EFS 卷时,可能会出现下面的一种错误。

ResourceInitializationError: failed to invoke EFS utils commands to set up EFS volumes: stderr: b'mount.nfs4: Connection timed out' : unsuccessful EFS utils command execution; code: 32

当您的 Fargate 任务由于连接计时原因无法连接到 EFS 文件系统时,会出现此错误。要解决此错误,请尝试以下问题排查步骤:

  1. 打开 Amazon EFS 控制台
  2. 在导航窗格中选择 File systems(文件系统)。
  3. 通过选择 Name(名称)或 File system ID(文件系统 ID)来选择要检查的文件系统。
  4. 选择 Network(网络)以显示现有挂载目标的列表。
  5. 选择 Manage(管理)。
    您可以查看挂载目标的安全组和安全组入站规则。

请确保安全组的入站规则允许来自 Fargate 任务安全组的流量通过端口 2049。此外,验证网络访问控制列表是否允许文件系统和任务之间的流量,从而检查子网级别是否允许网络流量。如果不允许该流量,则相应地修改规则。有关更多信息,请参阅带有公有子网和私有子网(NAT)的 VPC

ResourceInitializationError: failed to invoke EFS utils commands to set up EFS volumes: stderr: mount.nfs4: Connection reset by peer : unsuccessful EFS utils command execution; code: 32

在下列情况下将会出现此错误:

  • 您在创建文件系统后立即挂载了 EFS 文件系统。
  • 挂载目标的安全组不允许来自 Fargate 任务的入站流量通过端口 2049。

要排查此错误,请执行以下操作:

  • 创建挂载目标后,DNS 记录最长可能需要 90 秒的时间才能在一个区域中完全传播。因此,如果您以编程方式创建和挂载文件系统(例如使用 AWS CloudFormation 模板),则建议实施等待条件以避免此问题。
  • 请确保附加到 EFS 文件系统挂载目标的安全组入站规则允许来自 Fargate 任务的流量通过端口 2049。

ResourceInitializationError: failed to invoke EFS utils commands to set up EFS volumes: stderr: Failed to resolve "fs-xxxxxxxxxxx.efs.us-east-1.amazonaws.com" - check that your file system ID is correct

通常在下列情况下会出现此错误:

  • EFS 文件系统挂载目标未在启动 Fargate 任务的可用区中创建或在该可用区不可用。
  • 您正在为 VPC 使用自定义 DNS 服务器。

要解决此错误,请尝试执行以下操作:

ResourceInitializationError: failed to invoke EFS utils commands to set up EFS volumes: stderr: b'mount.nfs4: access denied by server while mounting 127.0.0.1:/' : unsuccessful EFS utils command execution; code: 32

当文件系统策略、任务角色策略或 POSIX 文件系统级别权限拒绝了对文件系统的访问时,会出现此错误。

EFS 文件系统的访问权限可能由网络访问控制列表、安全组、EFS 文件系统策略、ECS 任务角色 IAM 策略和 POSIX 文件中定义的权限控制。有关更多信息,请参阅将 Amazon EFS 与 Amazon ECS 和 AWS Fargate 结合使用的开发人员指南 – 第 2 部分

要解决此错误,请检查文件系统策略或 ECS 任务角色 IAM 策略是否拒绝对文件系统的访问。如果这些策略拒绝了权限,请修改策略以授予访问文件系统的权限。如果文件系统策略不存在,则在文件系统的创建过程中,默认情况下会向所有主体授予对文件系统的访问权限。