810
社区成员
发帖
与我相关
我的任务
分享 
在AI 应用开发过程中, 开发者会使用到各大模型API, 只使用一家LLM provider 往往难以满足需求, 而在接入多家API时, 我们往往会遇到如下问题:
针对此类场景, 解决方法往往是增加一个 LLM Gateway 进行统一管理, 比较流行的有 LiteLLM、OpenRouter 和 Ollama 等, 我们测试下来, 针对大量终端客户做 API 分发的场景, 开源项目 One Hub 较为实用, 此项目以 one-api 为基础(one-api 已不再维护). 本文主要探讨如何在亚马逊云科技上快速部署此项目且轻松实现弹性和高可用.
方案特点:
✅ Amazon CloudFormation 一键部署.
✅ 绝大部分服务为 Serverless 服务, 几乎零运维负担.
✅ 高弹性架构, 闲时节约成本, 高峰时期可承载高并发.
✅ 存算分离, 高可用架构.
✅ 安全可靠, 源站资源全部私有化部署, CloudFront 自带抗DDOS. 所有网络防火墙规则可通过 WAF 统一管理.
注1: 本方案的所有项目分析和 CloudFormation 部署脚本皆由 Amazon AI 工具 Kiro/Amazon Q Developer CLI 实现, 笔者辅助调节.
注2: 文中所提到的开源项目使用 Apache License Version 2.0, 本文仅探讨关于源码分析, 项目部署和功能使用层面的内容, 不涉及对原项目的代码或商标修改. 在实际使用中请遵守项目协议. 若涉及到二次开发请标明原项目出处, 若涉及到商标修改和发布, 请联系原作者.
📢限时插播:无需管理基础设施,利用亚马逊技术与生态,快速集成与部署生成式AI模型能力。
✨ 精心设计,旨在引导您深入探索Amazon Bedrock的模型选择与调用、模型自动化评估以及安全围栏(Guardrail)等重要功能。
⏩快快点击进入《多模一站通 —— Amazon Bedrock 上的基础模型初体验》实验构建无限, 探索启程!

对于 Amazon Globa Region 可以使用此处的 yaml文件 在 CloudFormation 中一键部署:
部署时务必将 DatabasePassword, SessionSecret, UserTokenSecret 这三个参数的默认值替换.
注意: 新亚马逊云科技账号或没有创建过ECS 资源的账号在创建堆栈时可能会报错(提示缺少ECS服务链接角色, 此角色为首次使用 ECS 时亚马逊云科技自动创建), 删除堆栈再次尝试即可.
对此项目进行单机部署很简单,在单机中直接运行 docker container 即可. 关于多机部署, 在项目部署文档中也有说明, 其中第三条提到了从服务器 slave 和主服务器 master 的概念, 但并没有详细说明这两种服务器类型的行为有什么区别, 而理清这一点对我们后续的部署策略和流量分发策略非常重要.

使用 Kiro/Amazon Q Developer 分析源码以明确部署策略
Kiro 和 Amazon Q Developer 是亚马逊云科技发布的 AI IDE 和 AI Agent 工具, 可以自动读取项目代码文件和搜索整个代码仓库从而实现对项目源码的精准分析. 用户可以根据自己的喜好选择任意一款工具快速完成项目分析任务. 笔者这里在Visual Studio Code 中打开了 One Hub 项目并启用了命令行工具 Amazon Q Developer CLI 对整个项目进行了分析, 最终结论如下:

详细分析请见: NODE_TYPE_分析报告
由此报告我们可以总结出部署需要注意的事项:
我们计划创建一个 ECS Cluster 并部署两个 Service.
创建两个 Task Definition 以为 Master 节点和 Slave 节点配置不同的环境变量.
Master Service
Slave Service
ECS Service 开启 Availability Zone rebalancing,以确保 LLM API 服务始终高可用.
由上文可以明确,所有节点需要连接到同一个数据库, 而只有Master 节点会进行写入操作.
本文部署 Aurora Serverless V2 for MySQL, 具有如下特点:
我们可以使用 ALB 监听器规则将 LLM API 请求全部转发到 Slave Target Group, 将所有其他与前端页面操作(主要是管理动作)相关的请求转发到 Master Target Group. 示例如下:

注意这里设定的规则:
Path = *v1*
主要是为了匹配多种 LLM API 调用格式, 如
/v1/chat/completions
/claude/v1/messages
但实际上这个规则并不能覆盖市面上所有的调用格式,且易与其他 API path 冲突, 需要针对使用场景进行修改.
该项目大多数场景是在互联网上提供服务, 为确保服务数据安全且长期稳定运行, 在网络规划方面我们有以下几个要点:
通过此配置, 我们在没有额外配置 WAF 的情况下即可实现:
部署完毕后,在 CloudFormation Stack Output 中找到 CloudFront URL, 根据此 使用说明 登陆系统进行 API 测试.
此处可配置 Amazon Bedrock 可用模型以及自定义映射关系:

Amazon Bedrock 相关模型的映射关系可以在此处找到.
配置完成后, 使用 Insomnia 进行 API 测试:

本方案绝大部分服务为 Serverless 服务, 成本与应用实际承载流量正相关. 以本文中提供的一键部署文件配置为例, 费用主要包含如下部分:
在个人使用场景下,经测试每日成本在 3.7-5.4 美元之间(不含大模型 API 调用费用), 不同 Region 部署会有差别. 可以看出 Serverless 架构用于部署流量不确定或业务起步阶段的应用具有巨大成本优势.
在将此方案部署落地到产品时,我们有如下改进方向:
通过充分利用亚马逊云科技的 Serverless 服务,我们将基础设施运维的重担转移给了云服务商,让开发团队能够将更多精力集中在业务创新和产品迭代上. 与此同时,AI 工具的应用也极大提升了我们的工作效率,缩短了产品从开发到部署上线的周期。
人工智能和云计算的结合是当下科技发展的大趋势,我们期望通过这些前沿技术,不断优化产品交付模式,为客户提供更加卓越的解决方案和服务体验。
参考链接
*前述特定亚马逊云科技生成式人工智能相关的服务目前在亚马逊云科技海外区域可用。亚马逊云科技中国区域相关云服务由西云数据和光环新网运营,具体信息以中国区域官网为准。
本篇作者

本期最新实验《多模一站通 —— Amazon Bedrock 上的基础模型初体验》
✨ 精心设计,旨在引导您深入探索Amazon Bedrock的模型选择与调用、模型自动化评估以及安全围栏(Guardrail)等重要功能。无需管理基础设施,利用亚马逊技术与生态,快速集成与部署生成式AI模型能力。
⏩️[点击进入实验] 即刻开启 AI 开发之旅
构建无限, 探索启程!