大家好!今天我们将继续探讨收据提取应用的构建。在本教程中,我们将基于此前创建的 Amazon ECR 收据提取镜像,在 Amazon Elastic Container Services (ECS) 上创建并部署 API。Amazon ECS 是一种完全托管的容器编排服务,能够帮助开发者构建、管理和运行容器,而无需处理复杂的基础设施管理。
环境准备
在开始之前,请确保你满足以下前提条件:
- 已阅读并完成 Amazon SageMaker AI 的前置教程。
- 拥有一个活跃的 AWS 账户(可自行注册/登录)。
- 本地已安装 Terraform。我们将使用 Terraform AWS Provider 来实现基础设施即代码 (IaC)。
- (可选)用于构建前端用户界面的 Streamlit。
了解快速模式 (Express Mode)
ECS 快速模式 (Express Mode) 允许我们直接使用 Amazon ECR 私有或公共镜像(主容器),且仅需配置 IAM 执行角色 (AmazonECSTaskExecutionRolePolicy) 和 IAM 基础设施角色 (AmazonECSInfrastructureRoleforExpressGatewayServices)。
其他配置(例如 IAM 任务角色)是可选的。在本文中,由于我们需要调用 SageMaker 终结点,因此配置了 IAM 任务角色。如果你不指定自定义 VPC,ECS 快速模式会自动使用默认 VPC。但为了在网络层获得更强的控制权,我们在本示例中采用了自定义 VPC。
请在同一个文件夹中创建以下 Terraform 配置文件:iam.tf、main.tf、vpc.tf 和 ecs.tf(完整代码可前往 GitHub 获取)。AWS 控制台在此处仅用于查看部署结果。
以下是用于创建 ECS 集群和 ECS 快速模式服务的 ecs.tf 配置文件:
# Create ECS Cluster
resource "aws_ecs_cluster" "fastapiecs" {
name = "fastapiecs"
}
# Create ECS Express Service that linked with receipt extraction ECR image
resource "aws_ecs_express_gateway_service" "fastapi" {
cluster = aws_ecs_cluster.fastapiecs.name
execution_role_arn = aws_iam_role.execution.arn
infrastructure_role_arn = aws_iam_role.infrastructure.arn
task_role_arn = aws_iam_role.task.arn
health_check_path = "/health"
cpu = "256"
memory = "512"
region = data.aws_region.current.region
primary_container {
image = "${local.account_id}.dkr.ecr.${local.region}.amazonaws.com/receipt-extraction-gemma-4:latest"
container_port = 8000
}
network_configuration {
subnets = aws_subnet.public[*].id
security_groups = [aws_security_group.alb_sg.id]
}
scaling_target {
auto_scaling_metric = "AVERAGE_CPU"
auto_scaling_target_value = 70
min_task_count = 1
max_task_count = 3
}
}Terraform 代码解析
在上述 ecs.tf 文件中:
execution_role_arn、infrastructure_role_arn和task_role_arn:用于从iam.tf中获取对应的 IAM 角色 ARN,确保容器具备所需的执行和访问权限。health_check_path:用于定义 ECR 镜像 API 的健康检查路径,确保服务的可用性。container_port:指定 ECR 镜像中 FastAPI 应用的容器端口(此处为 8000)。network_configuration:用于配置网络,指定子网 (Subnet) 和安全组 (Security Group)。scaling_target:配置自动伸缩策略,当平均 CPU 使用率达到 70% 时触发扩容,任务数限制在 1 到 3 之间。
将基于大语言模型(如 Gemma)的收据提取服务部署在 AWS ECS 快速模式(Express Mode)下,代表了 AI Agent 基础设施向“轻量化、微服务化”演进的典型趋势。相较于传统的 Kubernetes (EKS) 复杂架构或传统的 ECS 自定义模式,ECS 快速模式极大地简化了应用负载均衡和网络路由的配置,降低了运维门槛。在 AI Agent 生态中,Agent 需要频繁调用各类高度专一化的工具链(工具型 Agent 或 Tool Call APIs)。将类似 Gemma 的轻量级模型或专用抽取任务封装为自动弹性的云端微服务,不仅能确保高并发下的低延迟响应,还通过 Terraform 实现了基础设施即代码的标准化交付。这种模式打通了“大模型认知层”与“工程化工具层”之间的壁垒,是构建企业级、高可用 Multi-Agent 协作系统的基石方案。