rds

81 阅读2分钟

💡 类型 1:ECR 镜像拉取失败类题

📜 题干常见描述:

The ECS task failed to start with the error "CannotPullContainerError"

🧠 正确思路选项常见有:

正确选项关键字说明
Add AmazonECSTaskExecutionRolePolicy缺少拉取镜像权限
aws ecr get-login-password没登录就拉镜像
Ensure repository exists and image is pushed仓库/镜像不存在

❌ 错误选项识别法:

  • 修改 Dockerfile ➜ 没关系,问题不在 Dockerfile
  • 修改 ECS 服务名称 ➜ 不相关
  • 重启 ECS 服务 ➜ 不解决根本问题

💡 类型 2:端口映射 / 容器访问失败

📜 常见描述:

The application runs but is not accessible via the ALB

🧠 判断点:

错误点应选项建议
容器未监听 0.0.0.0修改 Dockerfile CMD 为 --host=0.0.0.0
安全组未放通修改 SG 允许 80/443
ALB 健康检查失败修改健康检查路径或容器端口

💡 类型 3:Fargate 网络问题

📜 常见描述:

Fargate task stuck in PENDING

🧠 正确选项建议:

  • Task Definition 缺少 awsvpc 网络模式(Fargate 专用)
  • 子网无 NAT 网关 ➜ 无法联网
  • 安全组未放通 ➜ 无法访问

💡 类型 4:日志配置问题

📜 常见描述:

No logs appear in CloudWatch

🧠 正确选项建议:

  • 添加 logConfiguration 到 Task Definition
  • ECS Execution Role 缺少 logs:PutLogEvents
  • 指定的 log group 不存在且未启用 auto create

🧪 模拟示例题 + 解析

题目:

A developer pushes a Docker image to ECR and starts an ECS Fargate task using it. The task fails with CannotPullContainerError. What should they do?

🧠 正确选项:

  • ✅ Ensure the ECS task execution role has AmazonECSTaskExecutionRolePolicy attached

📵 错误示例选项(不能选):

  • ❌ Restart the ECS cluster
  • ❌ Modify the Dockerfile to expose port 80
  • ❌ Rebuild the image

📘 总结:零环境也能满分的记忆口诀

🧠 记四招口诀,简单容器题就能轻松做:

拉镜像要权限,端口要放通,Fargate 要网络,日志靠配置

  • 镜像拉不动 ➜ IAM 权限 / 登录
  • 服务访问不了 ➜ 安全组 / ALB / CMD
  • 任务卡 pending ➜ 网络 / 子网 / awsvpc
  • 日志没输出 ➜ logs 权限 + 配置

📩 如果你手上有某道题的截图、选项或题干,我可以 逐题分析 你选哪个才对。要不要发我一题练练?