用途
boto3-ecs 提供使用 AWS Boto3 SDK 管理 Amazon ECS 的完整代码模式,覆盖集群、任务定义、服务与 Fargate 部署等操作。适合在 Python 应用中集成 ECS 管理能力,或通过脚本完成 ECS 资源的创建、更新、查询与删除。
主要能力
- 客户端初始化:通过 boto3.Session 指定 region_name 与可选 profile_name,创建 ECS 客户端。
- 集群操作:列出集群、描述集群(可包含 ATTACHMENTS、SETTINGS、STATISTICS)、创建带 Fargate 与 Fargate Spot 容量提供者及 containerInsights 设置的集群。
- 任务定义管理:注册任务定义(支持 awsvpc 网络模式、Fargate 兼容性、CPU/内存、执行角色与任务角色、容器定义、端口映射、awslogs 日志配置、环境变量与 Secrets Manager 密钥)、描述任务定义、列出任务定义族与修订版本。
- 服务操作:创建 Fargate 服务(含网络配置、负载均衡器、部署配置与部署断路器、启用 execute command)、更新服务(切换任务定义、调整期望数量、强制新部署)、描述服务、删除服务(先将 desiredCount 置 0 再删除)。
- 运行任务:运行一次性任务(支持容器命令覆盖与环境变量覆盖)、列出任务、描述任务(含健康状态)、停止任务。
- 容量提供者:使用 capacityProviderStrategy 替代 launchType,支持 FARGATE 与 FARGATE_SPOT 的权重与基数配置。
- 错误处理:捕获 ClusterNotFoundException、ServiceNotFoundException、ClientError(如 AccessDeniedException)与 BotoCoreError。
- 等待器:使用 services_stable 与 tasks_running 等待器处理异步操作。
- 部署监控:提供 monitor_deployment 函数,轮询 describe_services 检查部署 rolloutState,支持超时设置。
使用方式
安装依赖:
pip install boto3 botocore
初始化客户端示例:
import boto3 from typing import Optional
def get_ecs_client(region_name: str = 'us-east-1', profile_name: Optional[str] = None): session = boto3.Session( region_name=region_name, profile_name=profile_name ) return session.client('ecs')
ecs = get_ecs_client(region_name='us-west-2')
随后可按需调用 list_clusters、describe_clusters、create_cluster、register_task_definition、create_service、update_service、run_task、stop_task 等 API。文档按快速入门与详细参考分层组织,快速入门包含客户端初始化、集群操作、任务定义管理、服务 CRUD、运行任务与基础错误处理;详细参考涵盖集群操作、任务定义与服务管理。
适用场景
- 以编程方式管理 ECS 集群。
- 创建或更新任务定义。
- 部署与扩缩服务。
- 运行一次性任务(如数据库迁移、批处理作业)。
- 监控部署进度。
- 将 ECS 集成到 Python 应用中。
限制与注意事项
- 需要具备相应 AWS 权限,否则可能触发 AccessDeniedException。
- 使用 Fargate 时必须使用 awsvpc 网络模式。
- 敏感数据应使用 Secrets Manager,而非环境变量。
- 建议显式指定平台版本(如 '1.4.0')。
- 建议启用部署断路器以支持自动回滚。
- 建议使用容量提供者而非 launchType 以获得更大灵活性。
- 异步操作建议使用等待器而非轮询。
- 相关技能包括 terraform-ecs、ecs-fargate、ecs-deployment、ecs-troubleshooting。
- 具体收费、价格与平台支持信息暂未提供。