总体架构
本指南提供了一种构建 Web 应用程序的建议架构。 无服务器 它利用了*生成式人工智能*功能。目标是将AWS Amplify用于前端和持续集成/持续交付(CI/CD),并将AWS无服务器服务用于后端,从而创建一个可扩展、安全且易于维护的解决方案。.
- 前端: React 或 Next.js 托管在 AWS Amplify 托管 + CDN(CloudFront)。.
- 验证: Amazon Cognito(注册/登录 + 联合身份验证)。.
- API: API 网关(REST/HTTP)或 AppSync(GraphQL)将请求路由到 Lambda。.
- 生成逻辑: Lambda(Node/Python)向生成模型发送请求——该模型可以是托管的(OpenAI/Hugging Face/Bedrock),也可以是使用 Triton/TorchServe 在 GPU 服务器上自托管的。.
- 贮存: 文件存储使用 S3,元数据/会话存储使用 DynamoDB 或 RDS。.
- 安全与网络: WAF、Shield Advanced、IAM 最小权限、密钥管理器。.
- CDN 和缓存: 使用 CloudFront + Lambda@Edge 或缓存标头来改善延迟并降低成本。.
创建应用程序的实用步骤(分步指南)
1. 准备开发环境
安装所需的基本工具:Node.js、npm 和 AWS Amplify CLI。然后克隆项目仓库并安装依赖项。.
curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
npm install -g @aws-amplify/cli
git clone <repo>
cd <repo>
npm install配置 AWS CLI 和 Amplify,并初始化 Amplify 项目:
aws configure
amplify configure
amplify init
2. 添加与 Cognito 的身份验证
使用 Amplify,您可以快速添加身份验证功能。选项包括默认设置或手动自定义。如有需要,可使用与 Google/Facebook 的联合身份验证,并启用密码规则、多因素身份验证 (MFA) 和电子邮件验证。.
amplify add auth
# choose default or manual configuration
amplify push
3. 创建无服务器 API(REST 或 GraphQL)
使用 Amplify 添加 API;您可以选择使用 Lambda 的 REST 或使用 AppSync + DynamoDB 的 GraphQL。.
amplify add api
# choose REST and Lambda function template
amplify push或者对于 GraphQL:
amplify add api
# choose GraphQL + DynamoDB
amplify push
4. 编写与生成式人工智能模型交互的 Lambda 函数
Lambda 充当前端和生成模型之间的接口。如果您使用 OpenAI 等外部服务,请妥善保管 API 密钥,并通过 Lambda 发送请求。.
const fetch = require('node-fetch');
exports.handler = async (event) => {
const prompt = JSON.parse(event.body).prompt;
const apiKey = process.env.OPENAI_API_KEY;
const res = await fetch('https://api.openai.com/v1/chat/completions', {
method: 'POST',
headers: { 'Authorization': `Bearer ${apiKey}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
model: 'gpt-4o-mini',
messages: [{ role: 'user', content: prompt }]
})
});
const data = await res.json();
return { statusCode: 200, body: JSON.stringify(data) };
};如果将模型托管在 GPU 服务器上,Lambda 或后端服务会将请求发送到其端点:
const res = await fetch('https://gpu.example.com/inference', {
method: 'POST',
headers: { 'Authorization': `Bearer ${process.env.MODEL_TOKEN}`, 'Content-Type': 'application/json' },
body: JSON.stringify({ inputs: prompt })
});
5. 流媒体/实时实现(可选)
对于较长的响应或流式令牌,请使用 WebSocket 或服务器发送事件 (Server-Sent Events)。在 AWS 上,您可以使用 API Gateway WebSocket 或 AppSync 订阅。.
6. 使用 Amplify Hosting 进行前端托管和 CI/CD
Amplify Hosting 允许您从 Git 存储库启动 CI/CD;每次推送到特定分支都会触发自动构建和部署。.
amplify hosting add
amplify publish
安全、密钥管理和身份与访问管理 (IAM) 策略
秘密管理
从 AWS Secrets Manager 用于存储 API 密钥和密钥。Lambda 的 IAM 角色应仅包含对指定密钥的读取权限。.
示例 IAM 策略
一个允许 Lambda 读取特定密钥的最小策略示例:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "secretsmanager:GetSecretValue",
"Resource": "arn:aws:secretsmanager:region:acct-id:secret:myOpenAIKey"
}
]
}
抵御攻击和内容安全
为了保护应用程序:
- 激活 AWS WAF 阻止恶意请求。.
- 使用 AWS Shield (默认设置为标准模式,比 Shield Advanced 提供更强的保护)。.
- 在 API 层面,利用 API 网关中的速率限制和使用计划。.
- 内容审核 为了提高产出质量:使用审核模型(OpenAI/HuggingFace)审核和筛选回复。.
选择数据中心位置并比较其延迟和合规性
根据用户分布和法律要求选择合适的地区非常重要。常见建议:
- us-east-1: 运送到北美速度快,基本服务费用更低。.
- eu-west-1: 适用于隐私法律更为严格的欧洲地区。.
- ap-southeast-1 / ap-northeast-1: 亚洲地区,面向亚洲大陆的用户。.
对于分布式用户,可以使用 CDN(CloudFront)并将模型分发到多个区域或进行边缘推理。.
如有需要 极低延迟 或者,如果您完全掌控数据,您可以将模型托管在公司位于 85 多个地点的 GPU 服务器上,这样可以降低延迟、控制数据并具备硬件防 DDoS 功能。.
模型托管——云端GPU vs. 托管API(优缺点分析)
GPU上托管服务和自托管服务的总体比较:
- 托管(OpenAI/Bedrock/Hugging Face):
- 优势: 无需维护,模型更新简单,访问快捷。.
- 缺点: 按请求收费,隐私问题。.
- 自托管于 GPU:
- 优势: 服务器费用固定,完全控制,专用设置,使用我们的图形服务器进行渲染和人工智能。.
- 缺点: 需要管理和监控,以及手动扩展能力。.
推荐: 使用托管服务器进行概念验证;对于高吞吐量和低延迟的需求,迁移到 GPU 服务器。.
性能和成本优化
- 伸展运动: 将非敏感输出缓存到 CloudFront 或 Redis/ElastiCache 中。.
- 型号选择: 使用满足实际需求的最小模型(精简版或量化版)。.
- Lambda 限制: 对于长时间推理,请使用 ECS/EKS 或 GPU 服务器,因为 Lambda 有时间/CPU 限制。.
- 监测: CloudWatch 用于日志和指标,X-Ray 用于追踪。.
- 成本节省: 预留或使用预留实例或专用 GPU 服务器进行长期推理。.
配置 Nginx 反向代理到 GPU 上的 Triton 的示例
如果模型运行在 GPU 服务器上,您可以使用 Nginx 设置反向代理:
server {
listen 443 ssl;
server_name ai.example.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
最后的一些安全和隐私提示
以下是一些保护数据和遵守法律的实用建议:
- 敏感日志记录: 避免直接存储敏感提示信息,或者对其进行加密。.
- 数据保留: 审查 GDPR/PDPA 要求;如有需要,使用特定位置(数据驻留)。.
- 输入/输出: 使用验证和清理措施来防止快速注入和数据泄露。.
应用示例和场景
- 具有建议和摘要功能的内容创作和文本编辑器应用程序。.
- 智能聊天机器人,会话上下文存储在 DynamoDB 中。.
- 面向开发者的智能编码工具,具备自动补全和重构建议功能。.
- 使用 GPU 服务器处理图像和视频的 AI 混合渲染工具。.
在我们公司(拥有85个以上分支机构)安顿下来的实用技巧
降低延迟、优化全球用户体验的实用技巧:
- 对于欧洲、亚洲或拉丁美洲的用户,请使用附近的位置来减少 p99 延迟。.
- 对于交易和游戏,请使用专用的交易 VPS 和游戏 VPS,并启用防 DDoS 和 BGP Anycast 功能,以减少延迟和丢包。.
- 使用 GPU 云进行大型模型的训练和推理,以优化成本和延迟。.
- 利用网络和 CDN 分发内容并缩短加载时间。.
快速发布前总结和检查清单
- Amplify Hosting 和 CI 均已启用。.
- Cognito 已配置为进行身份验证,并根据需要启用 MFA。.
- 安全可靠,Lambda 访问控制最小化,并已配置密钥管理器。.
- 对 API 实施 WAF 和速率限制。.
- 应启用 CDN 和缓存以减少资源占用和延迟。.
- 根据目标用户和法律要求选择合适的地点。.
- 已建立监控和警报程序(CloudWatch + Slack/电子邮件)。.
- 公开发布前应进行负载测试和渗透测试。.
技术支持和咨询选项
为了帮助您选择最佳的区域、GPU 和网络组合,我们提供遍布 85 多个地点的托管方案和图形服务器。技术团队可为您提供模型迁移和 CI/CD 设置方面的指导。.









