AWS ECS Fargate CannotPullContainerError:已重试引用拉取,复制失败:httpReadSeeker:打开失败:意外状态代码

问题描述 投票:0回答:1

从 ECS 控制台我开始看到这个问题

enter image description here

我想我很清楚其中的原因。 ECS 以匿名用户身份提取这些映像,因为我没有提供任何凭据,并且由于任务设置为每 5 分钟运行一次,因此它达到了匿名配额。没什么大不了的,我将任务设置为每 10 分钟运行一次,现在问题已经解决了。

让我发疯的是:

  • 从CloudWatch控制台可以看到任务已经执行。如果我绘制执行次数图表,我将每 5 分钟看到一个包含数据点的图表。这对我来说是错误的,因为为了执行任务,ECS 首先需要拉一些东西,但它不能,因此没有执行。
  • 我在任何 CloudWatch 日志流中都找不到错误
    (CannotPullContainerError: ref pull has been retried 1 time(s): failed to copy: httpReadSeeker: failed open: unexpected status code https://registry-1.docker.io/v2/amazon/aws-for-fluent-bit/manifests/sha256:f134723f733ba4f3489c742dd8cbd0ade7eba46c75d574...)

我需要能够监控此错误。我抽查了它,因为我在查看控制台时偶然发现了它。我如何监控这一点?

仅供参考,我也使用 Data Dog 进行日志摄取。也许这有帮助?

docker amazon-ecs amazon-cloudwatch
1个回答
0
投票

对于遇到此错误并显示以下消息的人:“ref pull...”、“httpReadSeeker...”,这完全与网络问题有关,即任务无法访问 ECR 来拉取图像。

解决方案:

  • 首先,查看这篇博客文章,看看是否可以解决您的相关网络配置问题
  • 如果您的任务/服务/集群位于 VPC 中,请检查 VPC 端点以确保它具有允许连接到 ECR 的端点:
    1. 转到 VPC > 终端节点 > 选择现有终端节点 > 选项卡路由表:确保它与路由表和任务运行的子网关联。
    2. 检查策略选项卡:它应该包含访问 ECR 的策略,例如:

{ "Sid": "访问 ECR 桶", "效果": "允许", “主要的”: ”*”, "操作": "s3:GetObject", “资源”:“

<ARN>
” }

© www.soinside.com 2019 - 2024. All rights reserved.