ECS Fargate 计划任务无法连接到 ECR

Posted

技术标签:

【中文标题】ECS Fargate 计划任务无法连接到 ECR【英文标题】:ECS Fargate Scheduled task cannot connect to ECR 【发布时间】:2020-04-25 02:05:15 【问题描述】:

我收到以下错误,我在 Internet 上的其他任何地方都找不到(尽管有很多类似的错误!)。 CannotPullContainerError: Error response from daemon: Get https://[clientid].dkr.ecr.eu-west-1.amazonaws.com/v2/: Unable to connect

我一直在查看以下故障排除参考:https://aws.amazon.com/premiumsupport/knowledge-center/ecs-pull-container-api-error-ecr/

我很确定我已经完成了所有这些事情,并且对它们进行了两次或三次检查 - 我为测试所做的其他事情:

通过解除端点与相关路由表的关联,消除了端点出现问题的可能性。

在私有子网指向的 NAT 网关所在的公有子网中创建了一个 EC2 实例,并且在 Fargate 任务使用的私有子网中创建了一个 EC2 实例,该实例具有与 ecsTaskExecutionRole 相同的权限策略并连接到私有子网中的 EC2 实例通过公有子网中的堡垒箱。我可以使用 ECR api,例如batch-get-image 并在使用 api 提供的凭据手动登录后从 ECR 中提取 Docker 映像。

已检查 ECR 存储库上没有策略。

从逻辑上讲,这会从故障排除列表中表明问题是Your AWS Identity and Access Management (IAM) role doesn't have the right permissions to pull or push images,但我使用的是ecsTaskExecutionRole specifically has these permissions

我现在完全没有想法 - 想知道我做错了什么或者是否发生了其他事情,特别是考虑到稍微不寻常的错误消息。有什么想法吗?

【问题讨论】:

您能否指定您正在使用哪种“主机”(Fargate 或常规 ECS-Cluster)以及它在网络(公共/私有)子网中的位置。请检查您是否可以 ping DNS-Endpoint ([clientid].dkr.ecr.eu-west-1.amazonaws.com)。 Unable to connect 对我来说听起来像是网络问题,而不是 IAM。 @Maurice 标题、问题文本和标签都写成Fargate @Maurice,是的,它是 Fargate。我得到 `PING proxy-eu-w-ProxyLB-xxxx,但 ping 没有响应 @Stev_k,你在使用任何调度策略吗? @Haran,我不知道。这只是一个 cron 工作。任务运行但失败 【参考方案1】:

试试这个, 检查分配给您的服务的 VPC 配置。在 VPC 设置中,确保入站规则应该对所有人开放。

【讨论】:

【参考方案2】:

原来是 DHCP 配置有问题。

抱歉打扰了,但可能会帮助其他人。

【讨论】:

你能详细说明一下吗?究竟是什么解决了它? 我们有一个自定义的 DHCP 设置 - 显然将其更改回默认值解决了它。或者更具体地说:domain-name = no.domain.com; domain-name-servers = 127.0.0.1, AmazonProvidedDNS; 感谢您的澄清!

以上是关于ECS Fargate 计划任务无法连接到 ECR的主要内容,如果未能解决你的问题,请参考以下文章

如何诊断 ECS Fargate 任务启动失败?

AWS ECS Fargate 从跨账户 ECR 存储库中提取映像

将新映像推送到 ECR 存储库时如何自动部署到 ECS Fargate

AWS ECS Fargate ALB 错误(请求超时)

在 AWS ECS Fargate 中,任务内无法进行容器间连接

无法使用 awsvpc 网络类型与 ECS Fargate 上同一任务中的另一个容器通信