用途
本技能面向使用 Terraform 在 AWS 上预置生产级 ECS 集群的场景,基于官方模块 terraform-aws-modules/ecs 提供可直接参考的配置模式。目标是让容器化应用的集群、服务、网络、权限和扩缩容能力通过基础设施即代码统一管理。
主要能力
- 集群配置:支持集群名称、容量提供商(Capacity Providers)、Fargate 与 EC2 启动类型、CloudWatch Container Insights 等设置。示例中使用 default_capacity_provider_use_fargate = true,并组合 FARGATE 与 FARGATE_SPOT,权重分别为 50 和 50。
- 任务定义:通过 aws_ecs_task_definition 定义容器,示例采用 awsvpc 网络模式、FARGATE 兼容性、cpu 512、memory 1024,包含端口映射、awslogs 日志驱动、环境变量、通过 Secrets Manager 注入机密以及健康检查配置。
- 服务与负载均衡:aws_ecs_service 支持容量提供商策略(不使用 launch_type)、platform_version、网络配置(私有子网、安全组、不分配公网 IP)、负载均衡器绑定、部署配置(maximum_percent、minimum_healthy_percent)、部署熔断器(启用并回滚)、执行命令(enable_execute_command)以及忽略 task_definition 变更的 lifecycle 设置。
- ALB 配置:包含 aws_lb、aws_lb_target_group(target_type = "ip")与 aws_lb_listener(HTTPS、TLS 策略、证书)示例,并给出健康检查参数。
- 自动扩缩容:通过 aws_appautoscaling_target 与 aws_appautoscaling_policy 实现基于 CPU(ECSServiceAverageCPUUtilization,目标 70)、内存(ECSServiceAverageMemoryUtilization,目标 80)和请求数(ALBRequestCountPerTarget,目标 1000)的目标跟踪扩缩容。
- IAM:区分任务执行角色(aws_iam_role.ecs_task_execution)与任务角色(aws_iam_role.ecs_task),并给出 Secrets Manager 与 SSM 参数访问、SSM 消息通道等策略示例,体现最小权限原则。
- 网络:提供 VPC 模块示例(CIDR、三个可用区、私有与公有子网、NAT 网关按可用区部署)以及 ECS 任务与 ALB 安全组规则。
- 输出与命令:输出 cluster_id、cluster_name、service_name、alb_dns_name;并列出 terraform init/plan/apply/destroy、aws ecs list-clusters、terraform output、aws ecs describe-services、aws logs tail、aws ecs execute-command 等常用命令。
使用方式
按资料给出的步骤使用:先编写包含 required_version(>= 1.11.0)与 aws provider(~> 6.0)的 Terraform 配置,引用 terraform-aws-modules/ecs/aws(~> 5.0),再依次执行 terraform init、terraform plan、terraform apply;查看输出可使用 terraform output。日常运维可使用资料中列出的 AWS CLI 命令。具体到每个资源的参数含义请以官方模块和 AWS 提供方文档为准,资料未逐一展开。
适用场景
适合在 AWS 上部署需要负载均衡、自动扩缩容与机密管理的容器化服务;适合希望以代码方式复现生产集群配置、并兼顾成本优化(例如使用 Fargate Spot)的团队;也适合需要远程执行容器命令(ECS Exec)与集中日志(CloudWatch Logs)的运维流程。
限制
资料未提供收费、价格、许可证或服务等级信息;未说明所涉模块与 AWS 提供方的全部版本兼容性;未给出完整的分步部署教程或故障排查指南,相关细节仍需参考官方文档。上述示例与命令均以资料原文为准,未做功能扩展或推断。