很多企业的核心业务跑在阿里云上,但遇到复杂的 AI 推理任务时,又眼馋 AWS Bedrock 上的 Claude 模型。
“业务在阿里云,AI 在 AWS”,这种跨云调用怎么做最优雅?最推荐的方案是:用阿里云函数计算(FC)做一层 Serverless 代理网关。
为什么用函数计算(FC)做代理?
- 隐藏凭证:AWS 的 AK/SK 绝对不能放在前端。放在 FC 里,结合阿里云 KMS 或环境变量,安全性极高。
- 弹性抗并发:FC 毫秒级冷启动,按调用次数计费。前端流量再大,FC 也能瞬间弹起足够的实例去请求 Bedrock。
- 网络连通性好:阿里云后端节点请求 AWS API 的网络质量,远比客户端直连要稳定。
架构设计
用户请求 -> 阿里云 API 网关 -> 函数计算 FC (Python) -> AWS Bedrock API
核心实现步骤
1. AWS 侧准备
在 AWS 控制台开通 Bedrock 中 Claude 模型的访问权限。
在 IAM 中创建一个只具备 bedrock:InvokeModel 权限的子用户,拿到 Access Key 和 Secret Key。
2. 阿里云 FC 侧配置
在阿里云函数计算控制台,新建一个 Python 运行环境的函数。
在函数的“环境变量”中,配置好 AWS 的凭证:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_REGION(如 us-east-1)
3. 编写 FC 处理代码
在 FC 的代码编辑器中,填入以下逻辑(需在层或依赖中安装 boto3):
import json
import boto3
import os
def handler(event, context):
# 解析前端传来的请求
evt = json.loads(event)
user_prompt = evt.get("prompt", "你好")
# 初始化 Bedrock 客户端(自动读取环境变量中的凭证)
bedrock = boto3.client(
service_name='bedrock-runtime',
region_name=os.environ.get('AWS_REGION', 'us-east-1')
)
try:
# 调用 Claude Sonnet 4.6 模型
response = bedrock.converse(
modelId='us.anthropic.claude-sonnet-4-6-v1', # 以AWS控制台最新模型ID为准
messages=[{
"role": "user", "content": [{
"text": user_prompt}]}]
)
reply_text = response['output']['message']['content'][0]['text']
return {
"statusCode": 200,
"body": json.dumps({
"reply": reply_text}, ensure_ascii=False)
}
except Exception as e:
return {
"statusCode": 500,
"body": json.dumps({
"error": str(e)})
}
性能与延迟评估
实测下来,从阿里云函数计算发起请求到 AWS Bedrock 响应,网络层的额外延迟通常在百毫秒级别。对于非流式的文本生成、数据提取等后台任务,这个延迟完全可以接受。
通过这种轻量级的跨云架构,你可以完美享受到阿里云的基础设施红利,同时白嫖到 AWS 顶级的 AI 模型能力。