在公共子网中运行的Fargate任务无法拉取容器镜像,出现CannotPullContainerError。

0

【以下的问题经过翻译处理】 你好,我有一个用于Fargate集群的任务定义,镜像位于ECR上,但由于某些原因它无法从ECR拉取容器镜像...

由于之前已经有过这样的问题,因此我参考了以下链接进行故障排除:

从我了解的情况来看,有两个关键因素:

  1. 从任务访问ECR的角色访问权限
  2. 公共子网的互联网访问权限

我的任务具有以下定义:

  • ecsTaskExecutionRole 具有 -> AmazonECSTaskExecutionRolePolicy -> 分配了以下操作

"Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*"

  • 使用 awsvpc 网络模式
  • 在定义中使用了正确的镜像URI
  • 它正在使用映射到互联网网关的公共子网
  • 为任务的 ENI 分配了公共IP地址

我还遗漏了什么其他问题吗?

附上一些图像作为参考。

profile picture
专家
已提问 5 个月前53 查看次数
1 回答
0

【以下的回答经过翻译处理】 我找到了答案,任务定义引用了“LATEST”镜像标签而非版本号。看看能否将镜像推送到ECR并将“Latest”作为标签,这样每次更新容器时就不需要更新任务定义了。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则