ECS 任务 / Lambda / Fargate / Athena / Glue

发布于:2025-06-22 ⋅ 阅读:(12) ⋅ 点赞:(0)

、一、题目核心(隐含目标)

你被告知某个 “纽约打车公司数据分析平台” 出现问题:

  • 数据上传到了 S3,但 后续流程不工作

  • 包括 ECS 任务 / Lambda / Fargate / Athena / Glue 等服务

  • 要你找到 中断点 + 修复方法


 二、排错思路总览(五步法)

我们分为 5 个关键组件进行排查


 步骤 1:S3 数据上传是否成功?

检查:

  • 文件是否出现在 S3 bucket 中?格式是否正确(如 .csv, .parquet)?

  • 触发事件是否配置(如 Lambda Trigger)?

常见错误:

问题 解决方式
Lambda 没被触发 检查 S3 事件通知是否启用
上传路径不对 检查 bucket 中对象前缀(path)
权限不足 Lambda 是否有 s3:GetObject 权限?

 步骤 2:Lambda 处理失败(或根本未触发)

检查 CloudWatch Logs:

aws logs describe-log-groups
aws logs tail /aws/lambda/<your-function-name> --follow

 典型报错:

报错 含义
AccessDenied Lambda 没权限访问 S3 / ECS
Invalid JSON 处理的数据格式不对
Timeout Lambda 超时,应调大 timeout

 步骤 3:ECS / Fargate 任务未触发或失败

 检查任务状态:

aws ecs describe-tasks --cluster <your-cluster-name>

 重点关注:

  • 任务定义中 container 镜像是否拉取失败?

  • 镜像是否存在于 ECR?

  • 子网 / 安全组 / 网络模式是否配置正确?

  • 日志写入 CloudWatch 吗?


 步骤 4:IAM 权限问题

 常见权限错误:

错误组件 应检查权限
Lambda s3:GetObject, ecs:RunTask, iam:PassRole
ECS 任务角色 logs:PutLogEvents, s3:GetObject, dynamodb:PutItem
Athena 查询 s3:ListBucket, glue:GetTable, athena:StartQueryExecution

 使用 IAM Policy Simulator 快速验证权限:

https://policysim.aws.amazon.com

 步骤 5:Glue/Athena 查询失败(用于分析结果)

检查:

  • Glue Catalog 表是否与 S3 数据格式匹配?

  • Athena 查询是否失败?检查 CloudTrail 或 Athena 控制台

  • 查询失败报错信息(如 “table not found”, “malformed row”)


 三、典型报错 + 正确修复建议(常考)

报错 根因 修复建议
Lambda 报 403 IAM 权限不全 给执行角色加 s3:GetObject, ecs:RunTask
ECS 任务 pending 没有可用子网 / CPU 不够 修改任务定义,绑定 Fargate + 合理配置 CPU
无日志输出 没配 CloudWatch 日志组 更新 task definition 加日志配置
Athena 查询为空 数据没落地 / 分区没刷新 修 Glue 表 / 加 partition 信息

 四、常用命令速查表

# 查看 ECS 任务状态
aws ecs describe-tasks --tasks <task-id> --cluster <cluster-name>

# 查看 S3 中文件
aws s3 ls s3://nyc-taxi-data-bucket/

# 查看 Lambda 日志
aws logs tail /aws/lambda/<lambda-name> --follow

# 查看 Glue 表
aws glue get-table --database-name nycdb --name trips

 五、答题技巧(适用于考试或挑战题)

题型 答题技巧
Lambda 报错题 看日志里是否是权限问题 / 网络问题
S3 未触发 看 bucket notification 设置是否生效
ECS 问题 看任务定义 + 网络配置 + 镜像拉取情况
Athena 问题 检查 Glue 表 / 文件格式是否对齐

总结口诀(NYC Taxi 数据管道排错口诀)

S3 是源头,Lambda 是触发,ECS 是处理,IAM 要放权,Athena 最终查结果。