我将 docker 容器存储在 AWS ECR 上,使用我创建的这个容器 Task 。当我通过 Fargate 运行 Task 时,服务从 PROVISIONING > PENDING (red color) > STOPPED states 移动。
Service Event 或 CloudWatch 中都没有日志。绝对没有办法知道真正的问题是什么。
任何想法移动的方式,AWS 文档都没有帮助。
我将 docker 容器存储在 AWS ECR 上,使用我创建的这个容器 Task 。当我通过 Fargate 运行 Task 时,服务从 PROVISIONING > PENDING (red color) > STOPPED states 移动。
Service Event 或 CloudWatch 中都没有日志。绝对没有办法知道真正的问题是什么。
任何想法移动的方式,AWS 文档都没有帮助。
我也看到了这个错误。就我而言,问题是image
我的容器定义中有一个无效值。根据https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.htmlimage
中的说明,该图像通常是一个 repository_url 和图像标签
AWS Fargate 缺少一个简单但很简单的信息,这就是导致您遇到问题的原因。让我逐步解释一下。
第一步是创建一个任务定义,当你这样做时,你可以定义
Entry point ["/bin/ls"]
Command [">","/list.txt","|","echo","/list.txt"]
这相当于 /bin/ls > /list.txt | 回声 /list.txt 。
请注意,中间的空格必须用逗号代替。AWS Farget 团队忘记的是,在向导的 TaskDefinition > Add Container 部分中,此逗号分隔符 echo,helloworld 在文本框 [![enter image description here][1]][1] 中提供。但是在任务表单中没有这样的信息。这非常令人困惑。
最后一件事,AWS Fargate 的调试信息非常有限。这是我的提示
希望能帮助到你
正如 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:”,因此出现了无效的格式错误。
根据我的经验,您需要在 ECR 中添加权限。在您的存储库中有一个称为权限的选项卡。添加您认为需要的权限。