为什么我无法在 Amazon Fargate 任务上挂载 Amazon EFS 卷?
当我在 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 文件系统时,就会出现这些错误。要解决此错误,请完成以下故障排除步骤:
- 打开 Amazon EFS 控制台。
- 在导航窗格中,选择文件系统。
- 通过选择文件系统的名称或文件系统 ID 来选择要检查的文件系统。
- 选择网络以显示现有挂载目标的清单。
- 选择管理。
您可以查看挂载目标的安全组和安全组入站规则。
务必让安全组的入站规则允许来自 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 主机名已关闭。
要解决此错误,请尝试以下步骤:
- 确保 EFS 文件系统挂载目标与 Fargate 任务位于同一可用区中。您可以在 Amazon EFS 控制台中查看挂载目标的可用区、子网和安全组。然后,验证挂载目标是否使用与 Fargate 任务相同的可用区和子网。
- 如果您为 VPC 的 DHCP 选项指定了自定义 DNS 服务器,而不是 AmazonProvidedDNS,请务必配置有条件的 DNS 转发器。DNS 转发器必须将亚马逊云科技资源 (*.amazonaws.com) 的 DNS 查询发送到 VPC 的默认 DNS 服务器(位于 VPC CIDR .2 或 169.254.169.253)。有关更多信息,请参阅如何使用 Amazon Directory Service 和 Microsoft Active Directory 在本地网络和亚马逊云科技之间设置 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 策略是否拒绝对该文件系统的访问。如果这些策略拒绝访问权限,则修改策略以授予访问文件系统的权限。如果文件系统策略不存在,则在创建过程中会默认向所有主体授予文件系统的访问权限。
相关信息
相关内容
- AWS 官方已更新 9 个月前
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 4 年前