You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ECS部署中容器健康检查失败,请求技术排查支持

ECS容器健康检查失败问题排查求助

我在ECS上部署NextJS应用时碰到了容器健康检查失败的问题。应用自带/health路由,返回HTTP 200响应和JSON数据,这个路由在本地测试以及ALB负载均衡器的健康检查中都能正常工作,部署后的应用也可以通过公网URL正常访问,但ECS的容器健康检查始终无法通过,所有尝试过的命令都会在约2分钟后失败。

我尝试过的健康检查命令包括:

  • CMD-SHELL,curl -f http://localhost/health || exit 1
  • CMD-SHELL,curl -f http://localhost:3000/health || exit 1
  • CMD-SHELL,curl -f http://127.0.0.1/health || exit 1
  • CMD-SHELL,curl -f http://127.0.0.1:3000/health || exit 1
  • CMD-SHELL, echo "OK"
  • echo "OK"
  • CMD, echo "OK"

我在应用日志里看不到任何健康检查的请求记录(用echo命令时自然不会有记录,但调用API端点时也没有)。已经确认最终的容器镜像里存在echo和curl命令。

我的任务定义如下:

{
    "taskDefinitionArn": "[REDACTED]",
    "containerDefinitions": [
        {
            "name": "log_router",
            "image": "grafana/fluent-bit-plugin-loki",
            "cpu": 0,
            "memoryReservation": 50,
            "portMappings": [],
            "essential": true,
            "environment": [],
            "mountPoints": [],
            "volumesFrom": [],
            "user": "0",
            "logConfiguration": {
                "logDriver": "awslogs",
                "options": {
                    "awslogs-group": "firelens-container",
                    "awslogs-create-group": "true",
                    "awslogs-region": "us-east-2",
                    "awslogs-stream-prefix": "firelens"
                },
                "secretOptions": []
            },
            "systemControls": [],
            "firelensConfiguration": {
                "type": "fluentbit",
                "options": {
                    "enable-ecs-log-metadata": "true"
                }
            }
        },
        {
            "name": "[REDACTED]",
            "image": "[REDACTED]:latest",
            "cpu": 1024,
            "memory": 2048,
            "portMappings": [
                {
                    "name": "[REDACTED]-3000-tcp",
                    "containerPort": 3000,
                    "hostPort": 3000,
                    "protocol": "tcp"
                }
            ],
            "essential": true,
            "environment": [
                {
                    "name": "ENVIRONMENT",
                    "value": "development"
                }
            ],
            "mountPoints": [],
            "volumesFrom": [],
            "secrets": [],
            "ulimits": [
                {
                    "name": "nofile",
                    "softLimit": 65536,
                    "hardLimit": 65536
                }
            ],
            "logConfiguration": {
                "logDriver": "awsfirelens",
                "options": {
                    "RemoveKeys": "container_id,ecs_task_arn",
                    "LineFormat": "key_value",
                    "Labels": "{app=\"[REDACTED]\"}",
                    "LabelKeys": "container_name,ecs_task_definition,source,ecs_cluster",
                    "Url": "[REDACTED]",
                    "Name": "grafana-loki"
                },
                "secretOptions": []
            },
            "healthCheck": {
                "command": [
                    "CMD",
                    "echo \"ok\""
                ],
                "interval": 30,
                "timeout": 5,
                "retries": 3,
                "startPeriod": 30
            },
            "systemControls": []
        }
    ],
    "family": "[REDACTED]-development",
    "taskRoleArn": "[REDACTED]",
    "executionRoleArn": "[REDACTED]",
    "networkMode": "awsvpc",
    "revision": 22,
    "volumes": [],
    "status": "ACTIVE",
    "requiresAttributes": [
        {
            "name": "ecs.capability.execution-role-awslogs"
        },
        {
            "name": "com.amazonaws.ecs.capability.ecr-auth"
        },
        {
            "name": "com.amazonaws.ecs.capability.docker-remote-api.1.17"
        },
        {
            "name": "com.amazonaws.ecs.capability.docker-remote-api.1.21"
        },
        {
            "name": "com.amazonaws.ecs.capability.logging-driver.awsfirelens"
        },
        {
            "name": "com.amazonaws.ecs.capability.task-iam-role"
        },
        {
            "name": "ecs.capability.container-health-check"
        },
        {
            "name": "ecs.capability.execution-role-ecr-pull"
        },
        {
            "name": "ecs.capability.secrets.ssm.environment-variables"
        },
        {
            "name": "com.amazonaws.ecs.capability.docker-remote-api.1.18"
        },
        {
            "name": "ecs.capability.task-eni"
        },
        {
            "name": "com.amazonaws.ecs.capability.docker-remote-api.1.29"
        },
        {
            "name": "com.amazonaws.ecs.capability.logging-driver.awslogs"
        },
        {
            "name": "com.amazonaws.ecs.capability.docker-remote-api.1.19"
        },
        {
            "name": "ecs.capability.firelens.fluentbit"
        }
    ],
    "placementConstraints": [],
    "compatibilities": [
        "EC2",
        "FARGATE"
    ],
    "requiresCompatibilities": [
        "FARGATE"
    ],
    "cpu": "1024",
    "memory": "2048",
    "registeredAt": "2024-07-12T15:54:18.852Z",
    "registeredBy": "[REDACTED]",
    "tags": [
        {
            "key": "Environment",
            "value": "development"
        },
        {
            "key": "CostCenter",
            "value": "engineering"
        },
        {
            "key": "Application",
            "value": "[REDACTED]"
        },
        {
            "key": "Name",
            "value": "[REDACTED]"
        }
    ]
}

内容的提问来源于stack exchange,提问作者Andrew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 22:32:03