AWS Transform 实战:一键扫描代码库,把第三方 AI SDK 调用迁移到 Bedrock

如果你的项目里散落着各种 AI SDK 调用——这里一个 OpenAI 的 chat.completions.create,那里一个第三方模型的调用,可能还有直连 Anthropic API 的代码——想统一迁到 Bedrock 上,最头疼的不是写代码,而是先搞清楚"到底有多少地方要改"。

AWS Transform 新出了一个模型迁移评估功能,干的就是这件事:

  1. 扫描你的代码库,找出所有 AI SDK 和模型调用
  2. 把每个调用映射到 Bedrock 上的等效模型
  3. 给出成本对比
  4. 生成可以直接用的代码改动

支持迁移的来源

来源 SDK/框架 覆盖范围
OpenAI openai Python/Node SDK chat, embeddings, assistants
第三方模型 SDK google-generativeai 等 generate, embed, chat
Anthropic 直连 anthropic SDK messages API
LangChain langchain + 各种 LLM wrapper 所有 provider
LlamaIndex llama_index 所有 LLM/embed
CrewAI crewai agent 定义 agent/tool 层
LangGraph langgraph node 定义 graph 中的 LLM 调用
LiteLLM litellm router 多 provider 路由
Ollama 本地模型 迁移到 Bedrock 托管

怎么用

安装 ATX CLI

pip install aws-transform-cli

# 配置 AWS 凭证(需要 Bedrock + Transform 权限)
aws configure

扫描代码库

# 对当前项目运行模型迁移评估
atx transform run \
  --transformation mke-genai-model-migration \
  --source ./my-project \
  --output ./migration-report

交互式问答

CLI 会问你几个问题来确定迁移策略:

? What is your primary migration goal?
  > Cost optimization
  > Security & compliance (VPC isolation, IAM)
  > Vendor consolidation
  > Performance improvement

? Do you have latency requirements?
  > P99 < 500ms (recommend provisioned throughput)
  > P99 < 2s (standard on-demand)
  > No strict requirement

? Are you open to model substitution for cost savings?
  > Yes, suggest cheaper alternatives where quality is comparable
  > No, map to exact equivalent models only

输出示例

扫描完会生成一份迁移报告:

{
  "summary": {
    "total_ai_calls_found": 47,
    "providers_detected": ["openai", "anthropic", "other-providers"],
    "frameworks_detected": ["langchain", "direct-sdk"],
    "estimated_monthly_savings": "$340 (23%)",
    "migration_complexity": "medium"
  },
  "model_mappings": [
    {
      "source": {
        "provider": "openai",
        "model": "gpt-4o",
        "usage": "chat completion",
        "files": ["src/agent/planner.py:42", "src/agent/reviewer.py:18"]
      },
      "target": {
        "provider": "bedrock",
        "model_id": "anthropic.claude-sonnet-4-20250514-v1:0",
        "rationale": "Similar capability, lower cost, supports tool_use",
        "monthly_cost_comparison": {
          "current": "$180",
          "after_migration": "$142",
          "savings": "21%"
        }
      }
    },
    {
      "source": {
        "provider": "openai",
        "model": "text-embedding-3-small",
        "usage": "embeddings",
        "files": ["src/rag/indexer.py:15"]
      },
      "target": {
        "provider": "bedrock",
        "model_id": "amazon.titan-embed-text-v2:0",
        "rationale": "Comparable quality, native AWS integration"
      }
    }
  ],
  "code_changes": [
    {
      "file": "src/agent/planner.py",
      "line": 42,
      "before": "client = OpenAI()\nresponse = client.chat.completions.create(model='gpt-4o', ...)",
      "after": "client = boto3.client('bedrock-runtime')\nresponse = client.converse(modelId='anthropic.claude-sonnet-4-20250514-v1:0', ...)"
    }
  ]
}

零代码迁移路径

对于 OpenAI SDK 的项目,有一条更简单的路:Bedrock 提供了 OpenAI 兼容端点,不改代码,只改环境变量:

# 原来的代码不用动
from openai import OpenAI

client = OpenAI()  # 会读 OPENAI_BASE_URL 环境变量
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Hello"}]
)
# 只改环境变量
export OPENAI_BASE_URL="https://bedrock-runtime.us-east-1.amazonaws.com/openai/v1"
export OPENAI_API_KEY="unused"  # Bedrock 用 IAM 认证,这个字段随便填

# 模型名映射
export OPENAI_MODEL_ID="anthropic.claude-sonnet-4-20250514-v1:0"

Transform 工具会自动识别哪些调用可以走这条零改动路径,哪些需要代码重写。

迁移到 Bedrock 的好处

为什么要从直连各家 API 迁到 Bedrock:

维度 直连各家 API 通过 Bedrock
认证 每家一个 API Key 统一 IAM
网络 公网调用 VPC Endpoint 内网
审计 各家日志格式不同 CloudTrail 统一
成本 各家计费不透明 Cost Explorer 统一看
安全 Key 泄露风险 IAM Role,无硬编码密钥
限流 各家 rate limit 不同 Provisioned Throughput 按需
护栏 自己实现 Bedrock Guardrails
缓存 各家方案不同 Bedrock Prompt Caching

注意事项

  1. 不是所有模型都有等效替代 —— 如果你用了 OpenAI 的 DALL-E 或 Whisper,Bedrock 上的替代方案功能可能不完全一致
  2. Framework 迁移有坑 —— LangChain/LlamaIndex 版本迭代快,确认 Transform 支持你的版本
  3. 成本对比是估算 —— 基于当前用量模式,实际迁移后可能不同(特别是 provisioned throughput 的场景)
  4. 先在 dev 环境跑 —— 不要在 prod 代码库上直接执行迁移

上手步骤

# 1. 安装
pip install aws-transform-cli

# 2. 扫描(只看不改)
atx transform run \
  --transformation mke-genai-model-migration \
  --source ./your-project \
  --output ./report \
  --dry-run

# 3. 看报告,确认映射合理
cat ./report/migration-summary.json | python -m json.tool

# 4. 生成代码改动(不自动应用)
atx transform run \
  --transformation mke-genai-model-migration \
  --source ./your-project \
  --output ./patches

# 5. Review 后手动应用
cd your-project && git apply ../patches/*.patch

文档:https://docs.aws.amazon.com/transform/latest/userguide/custom.html
博客:https://aws.amazon.com/blogs/migration-and-modernization/migrate-your-ai-workloads-to-amazon-bedrock-with-aws-transform/

posted @ 2026-06-18 11:38  亚马逊云开发者  阅读(5)  评论(0)    收藏  举报