ECS 中的 EFS 挂载“无法解决”

Posted

技术标签:

【中文标题】ECS 中的 EFS 挂载“无法解决”【英文标题】:EFS mount in ECS "Failed to resolve" 【发布时间】:2022-01-23 21:52:29 【问题描述】:

我正在尝试通过访问点创建一个装有 EFS 卷的 Fargate 容器,所有这些都是通过 cloudformation 创建的。我看到在门户中创建了 EFS,但是 ECS 任务失败了:

Failed to resolve "fs-XXX.efs.eu-west-2.amazonaws.com" - check that your file system ID is correct

在添加接入点之前,安装工作正常。我需要接入点,因为容器使用的是非 root 用户。

VPC 启用了 DNS 和主机名查找。

这里是 cloudformation 模板: https://pastebin.com/CgtvV17B

【问题讨论】:

【参考方案1】:

我认为 Fargate 任务无法到达 EFS 系统,请检查是否可以从 Fargate 访问 EFS 子网(至少部署在相同的子网中)以及 路由表 配置良好。 ECS和EFS的安全组配置好(检查你的EFS是否授权TCP 2049)。

还要检查 Fargate 的版本,我认为它仅适用于版本 > 1.4 的 EFS

尝试部署具有相同配置(相同 VPC 和子网属性)的实例 EC2,并检查它是否可以到达 EFS。

【讨论】:

"检查 EFS 是否在同一个 VPC 中" - EFS 在 VPC 中吗?我在 docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/… 中没有看到任何与 VPC 相关的配置 "路由表配置良好" - 只有默认路由表包括:10.0.0.0/16 > local0.0.0.0/0 > internet gateway 我不认为这是个问题吧? "检查您的 EFS 是否授权 TCP 2049" - EFS 只有默认创建的安全组,它允许:NFS/TCP/2049 “尝试部署具有相同配置的实例 EC2” - 我确实创建了一个实例并将其安装到 EFS 并且它工作正常。但是没有办法指定一个 EFS 接入点,这可能是我的罪魁祸首 @itaysk EFS 挂载目标位于 VPC 中:docs.aws.amazon.com/efs/latest/ug/accessing-fs.html【参考方案2】:

问题是缺少 EFS 挂载目标 https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-mounttarget.html

【讨论】:

以上是关于ECS 中的 EFS 挂载“无法解决”的主要内容,如果未能解决你的问题,请参考以下文章

将 EFS 接入点挂载到 ECS 卷时出现问题

ECS CLI - 启动容器实例时挂载 EFS

用于挂载EFS存储的ECS容器实例的引导用户数据

ECS Fargate 上的 EFS 挂载 - 非 root 用户的读/写权限被拒绝

在 ECS 中附加卷 EFS

Jenkins ECS 和 EFS 出错