⚡ Labs

基于AWS ECS快速模式部署Gemma收据提取API

基于AWS ECS快速模式部署Gemma收据提取API

大家好!今天我们将继续探讨收据提取应用的构建。在本教程中,我们将基于此前创建的 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.tfmain.tfvpc.tfecs.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_arninfrastructure_role_arntask_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 之间。
【AgentUpdate 深度解析】

将基于大语言模型(如 Gemma)的收据提取服务部署在 AWS ECS 快速模式(Express Mode)下,代表了 AI Agent 基础设施向“轻量化、微服务化”演进的典型趋势。相较于传统的 Kubernetes (EKS) 复杂架构或传统的 ECS 自定义模式,ECS 快速模式极大地简化了应用负载均衡和网络路由的配置,降低了运维门槛。在 AI Agent 生态中,Agent 需要频繁调用各类高度专一化的工具链(工具型 Agent 或 Tool Call APIs)。将类似 Gemma 的轻量级模型或专用抽取任务封装为自动弹性的云端微服务,不仅能确保高并发下的低延迟响应,还通过 Terraform 实现了基础设施即代码的标准化交付。这种模式打通了“大模型认知层”与“工程化工具层”之间的壁垒,是构建企业级、高可用 Multi-Agent 协作系统的基石方案。

↗ 阅读原文