SuperAPI AI 工具集

boto3-ecs

部署与运维

查看项目

更新于 10-16 03:59

技能介绍

用途

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。
  • 具体收费、价格与平台支持信息暂未提供。