Set up Amazon Bedrock
Last validated:
Configure an Amazon Bedrock provider in Aperture so your team can access AWS foundation models through your tailnet. Bedrock uses region-specific URLs and has its own model naming conventions, both of which you configure in the provider definition.
Aperture routes requests based on the model name, not the LLM client. Any LLM client configured to use Aperture can access any provider your admin has set up. Refer to the provider compatibility reference for the full list of supported providers and API formats.
Prerequisites
Before you begin, you need:
- An Aperture instance accessible from your device. Refer to get started with Aperture if you have not set this up.
- An AWS account with Bedrock model access enabled in your target region.
- A Bedrock API key. We recommend generating a long-term API key in the Amazon Bedrock console. Aperture sends this key as a bearer token in the
Authorizationheader and does not perform AWS signature verification or generate temporary credentials.
Select a region
Bedrock URLs are region-specific. The base URL format is:
https://bedrock-runtime.<region>.amazonaws.com
Choose the region where your desired models are enabled. Common regions include:
us-east-1(US East, N. Virginia)us-west-2(US West, Oregon)eu-west-1(Europe, Ireland)
Model availability varies by region. Check the AWS Bedrock documentation to confirm your target models are available in the region you select.
Understand model naming
Bedrock model names include a region prefix and a version suffix. The region prefix indicates where the model is available.
For example, the model name us.anthropic.claude-haiku-4-5-20251001-v1:0 breaks down as:
us.— US region availability prefixanthropic.claude-haiku-4-5— provider and model name20251001— model release datev1:0— version identifier
The following table shows commonly used Anthropic Claude models on Bedrock. Bedrock also supports models from other providers (such as Meta, Cohere, and Amazon). Check the AWS Bedrock documentation for the full list of available models and their names in your region.
| Model | Bedrock model name |
|---|---|
| Claude Haiku 4.5 | us.anthropic.claude-haiku-4-5-20251001-v1:0 |
| Claude Sonnet 4.5 | us.anthropic.claude-sonnet-4-5-20250929-v1:0 |
| Claude Opus 4.5 | us.anthropic.claude-opus-4-5-20251101-v1:0 |
| Claude Opus 4.6 | us.anthropic.claude-opus-4-6-v1 |
Use these full model names in your provider configuration. The names must match exactly, including the region prefix and version suffix.
Configure the provider
Add Amazon Bedrock as a provider in your Aperture configuration. The following example shows a configuration for the US East region with Anthropic Claude models.
{
"providers": {
"bedrock": {
"baseurl": "https://bedrock-runtime.us-east-1.amazonaws.com",
"apikey": "<your-bedrock-api-key>",
"authorization": "bearer",
"models": [
"us.anthropic.claude-haiku-4-5-20251001-v1:0",
"us.anthropic.claude-sonnet-4-5-20250929-v1:0",
"us.anthropic.claude-opus-4-5-20251101-v1:0",
"us.anthropic.claude-opus-4-6-v1"
],
"cost_basis": "bedrock-us",
"compatibility": {
"bedrock_model_invoke": true
}
}
}
}
Replace <your-bedrock-api-key> with your Bedrock API key.
The configuration fields work as follows:
bedrock_model_invokeenables the Bedrock InvokeModel endpoint, which is the standard Bedrock API. Most coding tools use this endpoint. If your tools use the Bedrock Converse API instead, add"bedrock_converse": trueto thecompatibilitysection. You can enable both flags simultaneously.cost_basiscontrols how Aperture calculates costs for requests. Usebedrock-usfor US-region pricing,bedrock-eufor EU-region pricing, orbedrockfor default Bedrock pricing. You must set this field explicitly because Aperture cannot auto-infer pricing for Bedrock providers.authorizationis set tobearerbecause Aperture passes the API key directly as a bearer token in theAuthorizationheader.
For the full list of compatibility flags, refer to the provider compatibility reference.
After configuring the provider:
- Grant model access to the users or groups that need the Bedrock models.
- Set up LLM clients to connect coding tools through Aperture.
Verify the provider
-
Open the Aperture dashboard and confirm the provider appears with the expected models.
-
Send a test request through a connected coding tool (such as Claude Code or Cursor), or use
curl:curl http://<aperture-address>/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{"model": "<model-name>", "messages": [{"role": "user", "content": "hello"}]}'Replace
<aperture-address>with your Aperture instance address and<model-name>with one of the models you configured for this provider. -
Check the Aperture dashboard session list for a new entry. The session shows the model name, token counts, and timestamp.
If the request fails, refer to the Aperture troubleshooting guide.
Region considerations
If you serve users in multiple AWS regions, you can configure multiple Bedrock providers with different base URLs and cost basis values. Use distinct provider keys to differentiate them.
For example, you might create bedrock-us for US East and bedrock-eu for Europe:
{
"providers": {
"bedrock-us": {
"baseurl": "https://bedrock-runtime.us-east-1.amazonaws.com",
"apikey": "<your-us-token>",
"authorization": "bearer",
"models": ["us.anthropic.claude-sonnet-4-5-20250929-v1:0"],
"cost_basis": "bedrock-us",
"compatibility": {
"bedrock_model_invoke": true
}
},
"bedrock-eu": {
"baseurl": "https://bedrock-runtime.eu-west-1.amazonaws.com",
"apikey": "<your-eu-token>",
"authorization": "bearer",
"models": ["eu.anthropic.claude-sonnet-4-5-20250929-v1:0"],
"cost_basis": "bedrock-eu",
"compatibility": {
"bedrock_model_invoke": true
}
}
}
}
Each provider operates independently with its own authentication token, model list, and cost basis.
Rotate credentials
To rotate the API key for a Bedrock provider:
- Generate a new Bedrock API key in the Amazon Bedrock console.
- Update the
apikeyfield in your Aperture provider configuration with the new key. - Verify that requests succeed with the new key.
If you have multiple Bedrock providers (for example, one per region), update each provider's apikey field independently.