Amazon Elastic Container Service (ECS) 是一项全托管的容器编排服务,旨在简化容器的构建、管理和运行,开发者无需处理底层基础设施的复杂性。本文将探讨如何将预先构建的票据提取 ECR 镜像部署到 ECS 上,创建一个生产级的 API 服务。
在开始部署前,需要满足一系列前置条件:包括 SageMaker AI 环境、AWS 账户、已安装的 Terraform(用于基础设施即代码 IaC)以及可选的 Streamlit 前端框架。核心架构将侧重于 ECS 的快速模式(Express Mode)。
ECS 快速模式主要利用 Amazon ECR 的私有或公共镜像作为主容器,并依赖特定的 IAM 角色,包括 IAM 执行角色(AmazonECSTaskExecutionRolePolicy)和基础设施角色(AmazonECSInfrastructureRoleforExpressGatewayServices)。虽然该模式可以自动使用默认 VPC,但为了更精细的网络控制,建议配置自定义 VPC。此外,若需调用 SageMaker 端点,必须配置特定的 IAM 任务角色(Task Role)。
通过 Terraform 自动化部署时,需要编写 iam.tf、main.tf、vpc.tf 和 ecs.tf 文件。在 ecs.tf 中,核心资源是 aws_ecs_cluster 和 aws_ecs_express_gateway_service。关键配置细节包括:execution_role_arn 用于权限管理,health_check_path 设为 /health 以监控镜像 API 状态,容器端口映射为 8000。此外,还需配置弹性伸缩目标(scaling_target),例如基于平均 CPU 使用率达到 70% 时进行扩容,并维持 1 到 3 个任务实例。这种方式能确保基于 Gemma 模型构建的票据提取服务在高并发场景下的稳定性。