使用 AWS Bedrock、Lambda 和 API Gateway 部署无服务器 AI 代理

发布: (2025年12月28日 GMT+8 09:15)
5 分钟阅读
原文: Dev.to

Source: Dev.to

概述

本指南介绍如何使用 Amazon Bedrock 构建由生成式 AI 驱动的问答服务。该架构通过 HTTP 接收提示,并返回模型生成的响应,同时通过完全无服务器的堆栈将成本降至最低。

数据流

  1. 外部客户端 发送 HTTP 请求到 API Gateway。
  2. API Gateway 将请求路由到 Lambda 函数。
  3. Lambda 函数调用 Amazon Bedrock 的 Nova Micro 模型。
  4. Lambda 容器镜像存储在 ECR(Elastic Container Registry)中。

要求

方面要求
提示处理接受提示并返回 Nova Micro 完成结果
HTTP 端点暴露用于触发响应的端点
估计流量约 100 次每月请求(用于成本估算)
自动化通过 GitHub Actions 完全自动化部署
可用性每月 99.9%+ 的正常运行时间
安全IAM 范围的 Bedrock 访问、OpenID Connect 认证、仅限 HTTPS
可观测性使用 CloudWatch 仪表盘的结构化日志

身份验证、输入消毒和授权被排除,以便专注于核心 GenAI 实现。

成本估算

基于每次请求约 22 个输入 token232 个输出 token 的估计:

服务月费用备注
Bedrock(Nova Micro)~ $0.0032,200 输入 / 23,200 输出 token
Lambda免费在免费额度内(1 M 请求,400 K GB‑秒)
API Gateway免费(第 1 年)免费额度后约 $0.0004/月
ECR~ $0.01300 MB 镜像,超过 500 MB 免费额度后计费

每月请求量与费用

请求次数约计费用
1 000~ $0.04
10 000~ $0.39
100 000~ $3.76

项目设置

mkdir -p handler terraform
cd handler
pnpm init -y
pnpm --package=typescript dlx tsc --init
mkdir -p src __tests__
touch src/{app,env,index}.ts

pnpm add -D @types/node tsx typescript
pnpm add ai @ai-sdk/amazon-bedrock zod dotenv

应用架构

flowchart TB
    A["Lambda Handler
*Parses events, returns responses*"] --> B["Application Logic
*Manages prompts & orchestration*"]
    B --> C["Bedrock Integration
*Model invocation via AI SDK*"]

Lambda 处理程序 (src/index.ts)

export const handler = async (event: any, context: any) => {
    try {
        const body = event.body ? JSON.parse(event.body) : {};
        const prompt = body.prompt ?? "Welcome from Warike technologies";
        const response = await main(prompt);
        return {
            statusCode: 200,
            body: JSON.stringify({ success: true, data: response }),
        };
    } catch (error) {
        return {
            statusCode: 500,
            body: JSON.stringify({
                success: false,
                error: error instanceof Error ? error.message : 'Unexpected error'
            }),
        };
    }
};

Bedrock 实用工具 (src/utils/bedrock.ts)

import { createAmazonBedrock, generateText } from 'ai';
import { config } from '../config';

export async function generateResponse(prompt: string) {
    const { regionId, modelId } = config({});
    const bedrock = createAmazonBedrock({ region: regionId });

    const { text, usage } = await generateText({
        model: bedrock(modelId),
        system: "You are a helpful assistant.",
        prompt: [{ role: "user", content: prompt }],
    });

    console.log(`model: ${modelId}, response: ${text}, usage: ${JSON.stringify(usage)}`);
    return text;
}

环境变量

AWS_REGION=us-west-2
AWS_BEDROCK_MODEL='amazon.nova-micro-v1:0'
AWS_BEARER_TOKEN_BEDROCK='aws_bearer_token_bedrock'

安全提示: 仅使用短期有效的 API 密钥。

Docker 构建

构建阶段

# Build Stage
FROM node:22-alpine AS builder
WORKDIR /usr/src/app
RUN corepack enable
COPY package.json pnpm-lock.yaml* ./
RUN pnpm install --frozen-lockfile
COPY . .
RUN pnpm run build

运行阶段

# Runtime Stage
FROM public.ecr.aws/lambda/nodejs:22
WORKDIR ${LAMBDA_TASK_ROOT}
COPY --from=builder /usr/src/app/dist/src ./ 
COPY --from=builder /usr/src/app/node_modules ./node_modules
CMD [ "index.handler" ]

基础设施组件

  • API Gateway – HTTP 协议与 Lambda 集成,CORS 头,JSON 访问日志。
  • Bedrock Permissions – 通过 IAM 访问 Nova Micro 推理配置文件。
  • Lambda Function – 900 秒超时,已启用 CloudWatch 日志。

📝 ECR 种子资源需要在本地运行 Docker。

flowchart LR
    A[Push to Main] --> B[Build & Test]
    B --> C[Build Docker Image]
    C --> D[Push to ECR]
    D --> E[Deploy Lambda]

使用 GitHub Actions 的 CI/CD

工作流(在推送到 main 时触发)处理以下任务:

  1. 构建并测试代码。
  2. 创建 Docker 镜像。
  3. 将镜像推送到 ECR。
  4. 通过 Terraform 部署 Lambda 函数。

测试端点

curl -sS "https://123456.execute-api.us-west-2.amazonaws.com/dev/" \
  -H "Content-Type: application/json" \
  -d '{"prompt":"Heeey hoe gaat het?"}' | jq

预期响应

{
  "success": true,
  "data": "Hoi! Het gaat prima, bedankt voor het vragen..."
}

可观测性

CloudWatch 仪表板提供错误和性能指标的可视化。

清理

terraform destroy

结论

  • 无服务器的生成式 AI,结合 API Gateway、Lambda 和 Bedrock 的 Nova Micro,提供了一个功能齐全且具成本效益的解决方案。
  • 即使在大规模情况下,定价仍然可以忽略不计。
  • Terraform 管理基础设施;GitHub Actions 自动化部署。
  • 该基础能够轻松支持更复杂的生成式 AI 应用。
Back to Blog

相关文章

阅读更多 »