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

S3触发Lambda调用ECS任务后控制台无法找到任务的排查求助

排查Lambda调用ECS任务成功但控制台无法查看的问题

问题描述

已实现S3事件触发Lambda,Lambda通过Java SDK调用ECS任务:使用RunTaskRequest调用指定的TaskDefinition。日志打印的RunTaskResponse显示任务ARN、容器列表均存在,且LatestStatus为pending,但在ECS控制台中无法找到该任务,需排查原因及查看任务的方法。

代码示例

EcsClient ecsClient = EcsClient.builder()
    .region(region)
    .credentialsProvider(ProfileCredentialsProvider.create())
    .build();

RunTaskRequest runTaskRequest= RunTaskRequest.builder()
        .taskDefinition("tasdefinition:taskId")
        .cluster("clustername")
        .networkConfiguration("networkconfig")
        .launchType("FARGATE")
        .build();

RunTaskResponse runTaskResponse = ecsClient.runTask(runTaskRequest);
ecsClient.close();

排查步骤

  • 核对集群与区域一致性
    确认代码中指定的cluster名称与控制台查看的集群完全匹配(注意大小写、拼写);同时检查Lambda运行区域是否与ECS集群所在区域一致,AWS资源为区域隔离,跨区域无法在控制台看到任务。

  • 查看已停止的任务历史
    控制台默认仅展示运行中的任务,若任务在pending后快速失败,会被移至已停止任务列表。进入ECS集群页面的「任务」标签,切换到「已停止」视图查找目标任务,查看终止原因。

  • 通过CLI/SDK查询任务详情
    使用AWS CLI直接查询任务状态:

    aws ecs describe-tasks --cluster clustername --tasks <任务ARN>
    

    或在Lambda代码中添加describeTasks调用,获取任务的详细状态、错误信息:

    DescribeTasksRequest describeReq = DescribeTasksRequest.builder()
        .cluster("clustername")
        .tasks(List.of(runTaskResponse.tasks().get(0).taskArn()))
        .build();
    DescribeTasksResponse describeResp = ecsClient.describeTasks(describeReq);
    // 打印详细任务信息
    System.out.println(describeResp.tasks());
    
  • 修正Lambda凭证与权限配置
    Lambda运行环境中ProfileCredentialsProvider.create()无效,应使用Lambda执行角色的权限。检查角色是否具备ecs:RunTask权限,同时Fargate模式下需确保角色拥有访问指定VPC、子网、安全组的相关权限。

  • 验证网络配置正确性
    Fargate模式下networkConfiguration需构造NetworkConfiguration对象而非直接传入字符串,示例正确写法:

    AwsVpcConfiguration vpcConfig = AwsVpcConfiguration.builder()
        .subnets(List.of("subnet-xxxxxx"))
        .securityGroups(List.of("sg-xxxxxx"))
        .assignPublicIp("ENABLED") // 按需配置
        .build();
    NetworkConfiguration networkConfig = NetworkConfiguration.builder()
        .awsvpcConfiguration(vpcConfig)
        .build();
    

    若网络配置错误(如子网不存在、安全组无出站权限),任务会快速失败并被清理。

  • 检查CloudWatch日志
    查看ECS任务定义中配置的CloudWatch日志组,即使任务失败,可能会输出启动失败的日志;同时检查Lambda的CloudWatch日志,确认是否有未捕获的异常或参数错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 15:07:03