AWS CodeDeploy:卡在安装步骤上

时间:2019-02-01 08:06:59

标签: amazon-web-services docker aws-code-deploy

我正在运行this教程,以使用基于自定义 .net 的自定义Docker镜像创建部署管道。
但是,当我开始部署时,它停留在安装阶段,因此我必须手动停止它: enter image description here

此后,我得到了几个具有不同任务定义的正在运行的任务(请注意:1和:4,因为到目前为止,我已尝试运行4次部署): enter image description here

他们还始终更改状态运行->提供->待处理。并且停止的任务列表会增加: enter image description here

问: 那么,如何使用CodeDeploy找出问题所在?为什么它永远运行?

更新: 它已连接到健康检查。

更新: 我得到这个:

(service dataapi-dev-service, taskSet ecs-svc/9223370487815385540) (port 80) is unhealthy in target-group dataapi-dev-tg1 due to (reason Health checks failed with these codes: [404]).

不太了解,为什么新创建的容器会失败,因为原来的容器通过了健康检查。

4 个答案:

答案 0 :(得分:1)

当ECS任务正在运行时,ELB(弹性负载平衡器)将在您在目标组中进行配置时不断进行容器的运行状况检查,以检查容器是否仍在响应。

从您的调试消息中,容器(api)使用404响应了运行状况检查路径。

我建议您在目标组dataapi-dev-tg1中配置healhcheck路径。

答案 1 :(得分:1)

如果您的负载均衡器面向 Internet,请确保您的 Internet 网关通过路由表 (Routes) 连接到您的子网。

答案 2 :(得分:1)

错误是由于健康检查检测到不健康的目标。 请务必在目标组设置中检查您的配置。enter image description here

答案 3 :(得分:0)

对于仍遇到此问题的用户:就我而言,ECS群集没有出站连接。

该问题的可能解决方案:

  • 使与VPC一起使用的安全组允许出站流量
  • 确保与VPC一起使用的路由表具有与您与负载均衡器一起使用的子网的子网关联(检查路由表)

我能够弄清楚,因为我在创建ECS集群期间启用了CloudWatch并获得了CannotPullContainerError。有关解决此问题的更多信息,请查看Cannot Pull Container Image Error