AWS Fargate任务调试,“CannotPullContainerError ...无效参考格式”是什么意思?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AWS Fargate任务调试,“CannotPullContainerError ...无效参考格式”是什么意思?相关的知识,希望对你有一定的参考价值。

我有一个存储在AWS ECR上的docker容器,使用我创建的Task这个容器。当我在Fargate上运行Task时,服务从PROVISIONING> PENDING(红色)> STOPPED状态移动。

服务事件或CloudWatch中没有日志。绝对没办法知道什么是真正的问题。

知道哪种方式移动,AWS文档没有帮助。

答案

我也看到了这个错误。在我的情况下,问题是我的容器定义中有一个无效的image值。根据imagehttps://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html说明,该图像通常是repository_url和image标签

另一答案

AWS Fargate缺少一个简单但有天赋的信息,这就是引导您解决问题的原因。让我一步一步解释。

第一步是创建一个Task定义,当你这样做时,你可以定义

 Entry point ["/bin/ls"]
Command     [">","/list.txt","|","echo","/list.txt"]

这相当于/ bin / ls> /list.txt | echo /list.txt。

请注意,两者之间的空格必须用逗号代替。 AWS Farget团队忘记的是,在向导的TaskDefinition> Add Container部分中,这个逗号分隔符echo,helloworld在文本框[![在此处输入图像描述] [1]] [1]中提供。但在任务表单中没有这样的信息。这非常令人困惑。

最后一件事,AWS Fargate的调试信息非常有限。这是我的提示

  • 您只能在Cluster> Task> {TaskName}> {container}下获得可能的错误。出于错误的原因。
  • 如果错误非常小,我总是得到错误代码0,代码0之间没有空格。云上也没有任何东西。
  • 如果错误文本很大(可能大约是20个字符或>),您将在#1和CloudWatch日志中获得它。

希望能帮助到你

另一答案

根据我的经验,您需要在ECR中添加权限。在您的存储库中有一个名为权限的选项卡。添加您认为需要的权限。

另一答案

正如Marc所提到的,这通常是一个错误的DockerHub / repo映像名称。

在我的情况下,这是因为图像名称是由我的Docker Compose文件中的环境变量计算的:

services:
  web:
    image: scipilot/my-web-app:$MY_VERSION_TAG

我在使用ecs-cli compose service up时错过了设置环境变量。所以Fargate可能试图从Docker Hub中提取“scipilot / my-web-app:”,因此格式错误无效。

以上是关于AWS Fargate任务调试,“CannotPullContainerError ...无效参考格式”是什么意思?的主要内容,如果未能解决你的问题,请参考以下文章

AWS ECS Fargate 未创建任务 AmazonECSTaskExecutionRole 错误

AWS Fargate 任务 - awslogs 驱动程序 - 间歇性日志

AWS ECS Fargate 任务的静态出站 IP

aws ecs 控制台运行任务时出现错误“无法运行任务”,如何调试/找到真正的错误

AWS Fargate 任务抛出 Asm 获取用户名:AuthorizationData 格式错误,为空字段

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