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

2 分钟阅读
0

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

简短描述

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

以下问题可能会阻止您在 Fargate 任务上挂载 Amazon EFS 卷:

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

要对导致 Amazon Elastic Container Service (Amazon ECS) 任务无法启动的错误进行故障排除,请使用 AWSSupport-TroubleshootECSTaskFailedToStart 运行手册。然后参考问题的相关故障排除步骤。

解决方法

找到未能启动的任务

重要事项:

  • 在与您的 ECS 集群资源所在的同一亚马逊云科技区域使用 AWSSupport-TroubleshootECSTaskFailedToStart 运行手册。
  • 使用运行手册时,您必须使用最近失败的任务 ID。如果失败的任务是 Amazon ECS 服务的一部分,则使用服务中最近一次失败的任务。在自动化执行期间,失败任务必须在 ECS:DescribeTasks 中可见。默认情况下,已停止的 ECS 任务将在进入已停止状态后的 1 小时内保持可见。使用最近失败的任务 ID 可防止任务状态清理功能在自动化过程中导致分析中断。

有关如何启动运行手册的说明,请参阅 AWSSupport-TroubleshootECSTaskFailedToStart。根据自动化的输出,使用以下手动故障排除步骤之一。

根据您收到的错误消息对任务进行故障排除

当您尝试在 Fargate 任务上挂载 EFS 卷时,可能会遇到以下错误之一:

“ResourceInitializationError:未能调用 EFS utils 命令来设置 EFS 卷:stderr: b'mount.nfs4: 连接超时':EFS utils 命令执行失败;代码: 32”

当您的 Fargate 任务由于连接时间问题而无法连接到 EFS 文件系统时,就会出现这些错误。要解决此错误,请完成以下故障排除步骤:

  1. 打开 Amazon EFS 控制台
  2. 在导航窗格中,选择文件系统
  3. 通过选择文件系统的名称文件系统 ID 来选择要检查的文件系统。
  4. 选择网络以显示现有挂载目标的清单。
  5. 选择管理

您可以查看挂载目标的安全组和安全组入站规则。

务必让安全组的入站规则允许来自 Fargate 任务安全组的流量通过端口 2049。确认子网级别允许网络流量。为此,请验证网络访问控制列表是否允许文件系统和任务之间的流量。如果不允许该流量,则相应地修改规则。有关更多信息,请参阅 Amazon Virtual Private Cloud 中的安全性

“ResourceInitializationError:未能调用 EFS utils 命令来设置 EFS 卷:stderr: mount.nfs4: 对方重置连接:EFS utils 命令执行失败;代码: 32”

您可能会由于以下原因之一而收到此错误:

  • 您在创建 EFS 文件系统后立即挂载了该文件系统。
  • 挂载目标的安全组不允许来自 Fargate 任务的入站流量通过端口 2049。
  • 您使用的是 Amazon App Mesh,而由于代理规则,到端口 2049 的出站流量被屏蔽。

要对此错误进行故障排除,请执行以下步骤:

  • 创建挂载目标后,DNS 记录最多可能需要 90 秒才能在亚马逊云科技区域中完全传播。如果您以编程方式创建和挂载文件系统,例如使用 Amazon CloudFormation 模板,则要实施等待条件。
  • 确认附加到 EFS 文件系统挂载目标的入站安全组规则允许来自 Fargate 任务的流量通过端口 2049。
  • 如果您使用的是 App Mesh,请确保在 TaskDefinition 中指定的代理配置已将 EgressIgnoredPorts 设为 2049

“ResourceInitializationError:未能调用 EFS utils 命令来设置 EFS 卷:stderr: 解析“fs-xxxxxxxxxxx.efs.us-east-1.amazonaws.com”失败 - 检查您的文件系统编号是否正确”

您可能会由于以下原因之一而收到此错误:

  • EFS 文件系统挂载目标不是在启动 Fargate 任务的可用区中创建的或在该可用区不可用。
  • 您正在为 VPC 使用自定义 DNS 服务器。
  • VPC DNS 主机名已关闭。默认情况下 DNS 主机名已关闭。

要解决此错误,请尝试以下步骤:

“ResourceInitializationError:未能调用 EFS utils 命令来设置 EFS 卷:stderr:b'mount.nfs4:挂载 127.0.0.1:/ 时服务器拒绝访问':EFS utils 命令执行失败;代码: 32”

当以下策略和权限拒绝对文件系统的访问时,就会出现此错误:

  • 文件系统策略
  • 任务角色策略
  • POSIX 文件系统权限

对 EFS 文件系统的访问可能由以下资源中定义的权限控制:

  • 网络访问控制列表
  • 安全组
  • EFS 文件系统策略
  • ECS 任务角色 IAM 策略
  • POSIX 文件

有关更多信息,请参阅在 Amazon ECS 和 Amazon Fargate 上使用 Amazon EFS 的开发者指南 - 第 2 部分

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

相关信息

创建 Amazon EFS 文件系统

创建和管理挂载目标和安全组

如何将 Amazon EFS 文件系统挂载到 Amazon ECS 容器上或 Fargate 上运行的任务中?

在创建文件系统后文件系统挂载立即失败

AWS 官方
AWS 官方已更新 10 个月前