INTEGRITY Dokumentace

Amazon Bedrock

Amazon Bedrock umožňuje vytvářet a škálovat aplikace generativní AI pomocí základních modelů.

Endpoint

https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/aws-bedrock

Předpoklady

Při zasílání požadavků na Amazon Bedrock budete potřebovat:

Struktura URL

Při zasílání požadavků na Amazon Bedrock nahraďte https://bedrock-runtime.us-east-1.amazonaws.com/ v URL adrese, kterou aktuálně používáte s https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/aws-bedrock/bedrock-runtime/us-east-1/, poté připojte model, který chcete použít.

Pokud například chcete vyvolat model Anthropic Claude v 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

Ověřování pomocí Amazon Bedrock

Amazon Bedrock používá AWS Signature Version 4 (SigV4) k ověřování API požadavků. Na rozdíl od poskytovatelů, jako jsou OpenAI nebo Anthropic, kteří používají jednoduchý API klíč, AWS vyžaduje, aby byl každý požadavek kryptograficky podepsán vašimi přihlašovacími údaji.

AI Gateway za vás tuto složitost řeší. Když si uložíte přihlašovací údaje AWS pomocí BYOK, gateway před předáním každého požadavku do AWS automaticky podepíše.

Porovnání metod ověřování

Metoda cf-aig-authorization hlavička Authorization hlavička Podepisování
BYOK (Doporučeno) Bearer {CF_AIG_TOKEN} Není potřeba Gateway podepisuje automaticky
Podepisování na straně klienta Bearer {CF_AIG_TOKEN} Pre-signed hlavičky AWS Podepisujete pomocí aws4fetch nebo AWS SDK

Doporučeným postupem je uložit přihlašovací údaje AWS pomocí Bring Your Own Keys (BYOK) funkci. Díky tomu zůstávají vaše přihlašovací údaje v bezpečí a odpadá nutnost podepisovat požadavky na straně klienta.

  1. V Cloudflare dashboardu přejděte na AI > AI Gateway > vaše gateway > Provider Keys.

  2. Vyberte Přidat API klíč a vyberte Amazon Bedrock jako poskytovatele.

  3. Zadejte přihlašovací údaje AWS jako objekt JSON s následující strukturou:

    {
    	"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
    	"secretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
    	"region": "us-east-1"
    }
  4. Vyberte Save.

Pokud používáte dočasné přihlašovací údaje z AWS STS (například po převzetí role IAM), zahrňte sessionToken pole:

{
	"accessKeyId": "ASIAIOSFODNN7EXAMPLE",
	"secretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
	"region": "us-east-1",
	"sessionToken": "FwoGZXIvYXdzEBY..."
}

Po nakonfigurování BYOK stačí zahrnout pouze cf-aig-authorization hlavičku ve svých požadavcích. AI Gateway automaticky zajišťuje podepisování AWS SigV4.

Možnost 2: Podepisování na straně klienta

Pokud dáváte přednost podepisování požadavků sami, můžete použít aws4fetch knihovnu nebo libovolné AWS SDK k podepsání požadavku před jeho odesláním přes AI Gateway. Další informace najdete v příklad podepisování na straně klienta níže.

Příklady

cURL s BYOK

S vašimi přihlašovacími údaji AWS uloženo jako klíč poskytovatele, požadavky jsou jednoduché, podepisování AWS není potřeba:

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"
  }'

Podepisování na straně klienta pomocí aws4fetch

Pokud nepoužíváte BYOK, musíte požadavek před odesláním přes AI Gateway podepsat. Následující příklad používá aws4fetch knihovnu v Cloudflare Workeru:

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 });
	},
};

Používání Unified API (kompatibilní s OpenAI)

AI Gateway poskytuje Unified API která vám umožňuje používat formát OpenAI chat completions s modely Bedrock. To je v současné době podporováno pro Anthropic Claude a Amazon Nova modelových řad. K přístupu k těmto modelům běžícím na Bedrock můžete použít OpenAI SDK, aniž byste museli měnit formát požadavku.

Endpoint

https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/compat/chat/completions

cURL

S vašimi přihlašovacími údaji AWS uloženo jako klíč poskytovatele, model zadejte pomocí aws-bedrock/{model} formát:

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);