Документация Запланировать пилот

Amazon Bedrock

Amazon Bedrock ↗ позволяет создавать и масштабировать приложения генеративного ИИ на основе базовых моделей.

Конечная точка

https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/aws-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

Рекомендуемый подход состоит в том, чтобы хранить учётные данные AWS с помощью Bring Your Own Keys (BYOK) функцию. Она защищает ваши учетные данные и избавляет от необходимости подписывать запросы на стороне клиента.

  1. В панели управления Cloudflare перейдите в AI > AI Gateway > ваш шлюз > Ключи провайдера.

  2. Выберите Добавить API-ключ и выберите Amazon Bedrock в качестве провайдера.

  3. Введите свои учётные данные AWS в виде объекта JSON со следующей структурой:

    {
    	"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
    	"secretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
    	"region": "us-east-1"
    }
  4. Выберите 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/completions

cURL

С вашими учётными данными 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);

Запросите бесплатный пилот

Запланировать пилот