← Cloudflare AI Gateway / ai-gateway / usage / providers
Amazon Bedrock
Amazon Bedrock ↗ позволяет создавать и масштабировать приложения генеративного ИИ на основе базовых моделей.
Конечная точка
https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/aws-bedrockПредварительные требования
Для запросов к Amazon Bedrock вам потребуется:
- AI Gateway account ID
- AI Gateway gateway name
- Учётные данные AWS (
accessKeyId,secretAccessKey, а такжеregion) с разрешениями для Amazon Bedrock - Название модели Amazon Bedrock, которую вы хотите использовать
Структура URL
При отправке запросов к Amazon Bedrock замените https://bedrock-runtime.us-east-1.amazonaws.com/ в URL, который вы сейчас используете с https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/aws-bedrock/bedrock-runtime/us-east-1/, затем добавьте нужную модель.
Например, чтобы вызвать модель Anthropic Claude в us-east-1:
https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/aws-bedrock/bedrock-runtime/us-east-1/model/us.anthropic.claude-haiku-4-5-20251001-v1:0/invokeАутентификация в Amazon Bedrock
Amazon Bedrock использует AWS Signature Version 4 (SigV4) ↗ для аутентификации API-запросов. В отличие от таких провайдеров, как OpenAI или Anthropic, использующих простой API-ключ, AWS требует, чтобы каждый запрос был криптографически подписан вашими учетными данными.
AI Gateway берёт эту сложность на себя. Когда вы сохраняете свои учётные данные AWS с помощью BYOK, шлюз автоматически подписывает каждый запрос перед его пересылкой в AWS.
Сравнение методов аутентификации
| Метод | cf-aig-authorization заголовок |
Authorization заголовок |
Подпись |
|---|---|---|---|
| BYOK (рекомендуется) | Bearer {CF_AIG_TOKEN} |
Не требуется | Шлюз подписывает автоматически |
| Подпись на стороне клиента | Bearer {CF_AIG_TOKEN} |
Pre-signed заголовки AWS | Вы подписываете с помощью aws4fetch или AWS SDK |
Вариант 1: BYOK (рекомендуется)
Рекомендуемый подход состоит в том, чтобы хранить учётные данные AWS с помощью Bring Your Own Keys (BYOK) функцию. Она защищает ваши учетные данные и избавляет от необходимости подписывать запросы на стороне клиента.
-
В панели управления Cloudflare перейдите в AI > AI Gateway > ваш шлюз > Ключи провайдера.
-
Выберите Добавить API-ключ и выберите Amazon Bedrock в качестве провайдера.
-
Введите свои учётные данные AWS в виде объекта JSON со следующей структурой:
{ "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "secretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "region": "us-east-1" } -
Выберите Save.
Если вы используете временные учётные данные AWS STS (например, полученные при принятии роли IAM), включите sessionToken поле:
{
"accessKeyId": "ASIAIOSFODNN7EXAMPLE",
"secretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"region": "us-east-1",
"sessionToken": "FwoGZXIvYXdzEBY..."
}После настройки BYOK вам нужно включить только cf-aig-authorization заголовок в своих запросах. AI Gateway автоматически выполняет подпись AWS SigV4.
Вариант 2: подписание на стороне клиента
Если вы предпочитаете подписывать запросы самостоятельно, можно использовать aws4fetch ↗ библиотеку или любой AWS SDK, чтобы подписать запрос перед отправкой через AI Gateway. См. пример клиентской подписи ниже.
Примеры
cURL с BYOK
С вашими учётными данными AWS сохранён как ключ провайдера, запросы просты, подпись AWS не требуется:
curl "https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/aws-bedrock/bedrock-runtime/us-east-1/model/us.anthropic.claude-haiku-4-5-20251001-v1:0/invoke" \
-H "cf-aig-authorization: Bearer {CF_AIG_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"messages": [
{
"role": "user",
"content": "What is Cloudflare?"
}
],
"max_tokens": 256,
"anthropic_version": "bedrock-2023-05-31"
}'Подпись на стороне клиента с помощью aws4fetch
Если вы не используете BYOK, перед отправкой запроса через AI Gateway его необходимо подписать. В следующем примере используется aws4fetch библиотеку в Cloudflare Worker:
import { AwsClient } from "aws4fetch";
interface Env {
accessKey: string;
secretAccessKey: string;
}
export default {
async fetch(
request: Request,
env: Env,
ctx: ExecutionContext,
): Promise<Response> {
const cfAccountId = "{account_id}";
const gatewayName = "{gateway_id}";
const region = "us-east-1";
const awsClient = new AwsClient({
accessKeyId: env.accessKey,
secretAccessKey: env.secretAccessKey,
region: region,
service: "bedrock",
});
const body = JSON.stringify({
messages: [{ role: "user", content: "What does ethereal mean?" }],
max_tokens: 256,
anthropic_version: "bedrock-2023-05-31",
});
// Sign against the original AWS URL
const awsUrl = `https://bedrock-runtime.${region}.amazonaws.com/model/us.anthropic.claude-haiku-4-5-20251001-v1:0/invoke`;
const presignedRequest = await awsClient.sign(awsUrl, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: body,
});
// Send through AI Gateway
const gatewayUrl = `https://gateway.ai.cloudflare.com/v1/${cfAccountId}/${gatewayName}/aws-bedrock/bedrock-runtime/${region}/model/us.anthropic.claude-haiku-4-5-20251001-v1:0/invoke`;
const response = await fetch(gatewayUrl, {
method: "POST",
headers: presignedRequest.headers,
body: body,
});
if (
response.ok &&
response.headers.get("content-type")?.includes("application/json")
) {
const data = await response.json();
return new Response(JSON.stringify(data));
}
return new Response("Invalid response", { status: 500 });
},
};Использование Unified API (совместим с OpenAI)
AI Gateway предоставляет Unified API который позволяет использовать формат OpenAI chat completions с моделями Bedrock. В настоящее время это поддерживается для Anthropic Claude и Amazon Nova семейства моделей. Вы можете использовать OpenAI SDK для доступа к этим моделям, работающим на Bedrock, не меняя формат запроса.
Конечная точка
https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/compat/chat/completionscURL
С вашими учётными данными AWS сохранён как ключ провайдера, укажите модель с помощью aws-bedrock/{model} формат:
curl "https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/compat/chat/completions" \
-H "cf-aig-authorization: Bearer {CF_AIG_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"model": "aws-bedrock/us.anthropic.claude-haiku-4-5-20251001-v1:0",
"messages": [
{
"role": "user",
"content": "What is Cloudflare?"
}
]
}'OpenAI SDK
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "{CF_AIG_TOKEN}",
baseURL:
"https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/compat",
});
const response = await client.chat.completions.create({
model: "aws-bedrock/us.anthropic.claude-haiku-4-5-20251001-v1:0",
messages: [
{
role: "user",
content: "What is Cloudflare?",
},
],
});
console.log(response.choices[0].message.content);