AWS Bedrock
Amazon Bedrock 是一项 AWS 服务,可通过托管 API 访问 Amazon 及其他服务提供方的基础模型。AISIX 为应用提供统一的 OpenAI 兼容接口,用于访问由 Bedrock 托管的 Claude、Llama、Mistral、Amazon Nova、Cohere 等模型。
此配置适用于需要使用 AISIX 身份验证、模型允许列表、限流和用量核算的 Bedrock 托管模型。AISIX 使用 AWS SigV4 对出站 Bedrock 调用进行签名,或以 Bearer Token 发送 Bedrock API Key,参见选择凭证模式。
准备工作
开始前,请准备以下内容:
- 一套 AISIX 环境:
- 对于 AISIX Cloud,需要一个已关联网关的环境和具有写入作用域的 Admin Token。对于 On-Premises,请按照 AISIX Cloud 快速入门操作。如需申请 Hybrid Cloud 访问权限,请联系 API7。
- 对于开源 AISIX 网关,请准备本地 AISIX 安装,或使用开源 AISIX 网关快速入门中的 Docker 环境。配置网关以加载声明式资源文件。
- 对目标模型具有
bedrock:InvokeModel权限的 AWS 凭证:Access Key ID 和 Secret Access Key(使用临时凭证时另加 STS Session Token),或其他凭证模式之一。 - 对于跨区域推理,需要对推理配置文件 ARN、源区域以及每个目标区域中的基础模型 ARN 拥有
bedrock:InvokeModel权限。具体要求参见 AWS 的地理区域和全球推理配置文件说明。 - 对所选区域中目标 Bedrock 模型的访问权限,以及该模型的模型 ID 或推理配置文件 ID。
curl和jq。
使用 AISIX Cloud 配置
导出 AISIX Cloud 连接信息:
# AISIX_CP 是 Admin API 基础 URL;应包含 /api,且不含尾部斜杠
# 本地私有化部署快速入门使用 http://localhost:8080/api
export AISIX_CP="YOUR_AISIX_CLOUD_ADMIN_API_URL"
export AISIX_TOKEN="YOUR_ADMIN_TOKEN"
export ENV_ID="YOUR_ENVIRONMENT_ID"
使用 Bedrock 目录服务提供方和结构化 config 凭证创建服务提供方密钥:
PROVIDER_KEY_ID=$(curl -sS -X POST "$AISIX_CP/provider_keys" \
-H "Authorization: Bearer $AISIX_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"display_name": "bedrock-prod",
"provider": "amazon-bedrock",
"config": {
"access_key_id": "YOUR_AWS_ACCESS_KEY_ID",
"secret_access_key": "YOUR_AWS_SECRET_ACCESS_KEY",
"region": "us-west-2"
},
"allowed_environments": ["'"$ENV_ID"'"]
}' | jq -r '.provider_key.id')
凭证放在 config 中,因此请求省略 api_key。使用临时 STS 凭证时,在 config 中添加 session_token。如需以其他方式认证,在 config 中添加 auth_type,参见选择凭证模式。
api_base 是可选的。未设置时,控制面会保存凭证中 region 对应的运行时端点(本例为 https://bedrock-runtime.us-west-2.amazonaws.com,中国区域为 .amazonaws.com.cn),并像显式设置的值一样返回。使用私有 Bedrock 端点时请设置 api_base。region 不是合法的 AWS 区域名称,或属于隔离分区时,必须显式设置 api_base。之后将凭证替换为另一个区域的凭证时,由控制面推导出的端点会随之切换到新区域。
在 Dashboard 中,服务提供方密钥表单的认证方式字段用于选择凭证模式,并显示该模式需要的字段。
为 Claude Sonnet 5 创建别名。该模型不支持在 us-west-2 区域内推理,因此示例使用其美国地理区域推理配置文件:
MODEL_ID=$(curl -sS -X POST "$AISIX_CP/environments/$ENV_ID/models" \
-H "Authorization: Bearer $AISIX_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"display_name": "claude-bedrock",
"model_name": "us.anthropic.claude-sonnet-5",
"provider_key_id": "'"${PROVIDER_KEY_ID}"'"
}' | jq -r '.model.id')
创建可访问该模型的调用方 API Key:
BEDROCK_CALLER_KEY=$(curl -sS -X POST "$AISIX_CP/environments/$ENV_ID/api_keys" \
-H "Authorization: Bearer $AISIX_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"display_name": "bedrock-caller",
"allowed_models": ["'"${MODEL_ID}"'"]
}' | jq -r '.plaintext')