AWS Fargate任务调试,“CannotPullContainerError ...无效参考格式”是什么意思?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AWS Fargate任务调试,“CannotPullContainerError ...无效参考格式”是什么意思?相关的知识,希望对你有一定的参考价值。
我有一个存储在AWS ECR上的docker容器,使用我创建的Task这个容器。当我在Fargate上运行Task时,服务从PROVISIONING> PENDING(红色)> STOPPED状态移动。
服务事件或CloudWatch中没有日志。绝对没办法知道什么是真正的问题。
知道哪种方式移动,AWS文档没有帮助。
我也看到了这个错误。在我的情况下,问题是我的容器定义中有一个无效的image
值。根据image
的https://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 控制台运行任务时出现错误“无法运行任务”,如何调试/找到真正的错误