# Configuring Cross-Region Inference Profiles for Amazon Bedrock Models: A Complete Guide

> Configure cross-region inference profiles for Amazon Bedrock models. Enhance throughput and ensure data residency for your AI applications with our complete guide.

- Repository: [Amazon Web Services/agent-toolkit-for-aws](https://github.com/aws/agent-toolkit-for-aws)
- Tags: how-to-guide
- Published: 2026-07-01

---

**Cross-region inference profiles enable Amazon Bedrock to distribute model requests across multiple AWS regions using geographic prefixes like `us.`, `eu.`, or `global.`, improving throughput and ensuring data residency while requiring profile-specific IAM permissions and model IDs in your SDK code.**

Configuring cross-region inference profiles for Amazon Bedrock models allows you to route AI workloads across geographic boundaries automatically. According to the `aws/agent-toolkit-for-aws` repository, these profiles are logical groupings defined in [`skills/core-skills/amazon-bedrock/references/model-selection-guide.md`](https://github.com/aws/agent-toolkit-for-aws/blob/main/skills/core-skills/amazon-bedrock/references/model-selection-guide.md) that combine foundation models with routing prefixes, letting the service optimize for latency, throughput, and compliance.

## Understanding Cross-Region Inference Profiles

A cross-region inference profile is a logical abstraction that pairs a foundation model with a geographic routing prefix. When you specify a profile ID such as `global.anthropic.claude-sonnet-4-5-20250929-v1:0` instead of the base model ID, Bedrock evaluates the prefix to determine eligible regions for processing.

The routing prefixes function as follows:

- **`us.`** – Routes only to US commercial regions
- **`eu.`** – Routes only to EU commercial regions  
- **`apac.`** – Routes only to APAC commercial regions
- **`global.`** – Routes to any commercial region where the model is available

This behavior is implemented in the core Bedrock skill documentation at [`skills/core-skills/amazon-bedrock/SKILL.md`](https://github.com/aws/agent-toolkit-for-aws/blob/main/skills/core-skills/amazon-bedrock/SKILL.md).

## Benefits of Cross-Region Inference

Using inference profiles provides specific architectural advantages:

- **Higher throughput** – Distributes traffic across multiple regions, avoiding single-region quota bottlenecks
- **Data residency control** – Geographic prefixes enforce that requests never leave specified regions, satisfying compliance requirements
- **Simplified IAM management** – Single policies can grant access to all regions covered by a profile rather than enumerating regional endpoints
- **Cost allocation** – Profiles support tagging for detailed usage tracking in AWS Cost Explorer, as referenced in the cost-tracking documentation

## Step-by-Step Configuration

Follow these steps to configure and deploy a cross-region inference profile based on the repository's implementation guides.

### 1. Identify Available Models

First, determine which models support cross-region inference in your target region:

```bash
aws bedrock list-foundation-models --region us-east-1

```

Check for existing profiles that might already include your target model:

```bash
aws bedrock list-inference-profiles --region us-east-1

```

### 2. Create the Inference Profile

If no existing profile meets your requirements, create one using the AWS CLI. The CLI scaffolds a `global.` profile by default:

```bash
aws bedrock create-inference-profile \
    --profile-name my-profile \
    --model-id amazon.titan-text-v2:0 \
    --region us-east-1

```

For geographic control, construct the profile ID manually using the appropriate prefix (e.g., `us.amazon.titan-text-v2:0`).

### 3. Configure IAM Permissions

Your IAM policy must authorize both the foundation model and the inference profile. According to [`skills/core-skills/amazon-bedrock/references/agents-and-action-groups.md`](https://github.com/aws/agent-toolkit-for-aws/blob/main/skills/core-skills/amazon-bedrock/references/agents-and-action-groups.md), the policy requires a wildcard region for the foundation model because requests may route to any region in the profile:

```json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "bedrock:InvokeModel",
      "Resource": [
        "arn:aws:bedrock:*::foundation-model/amazon.titan-text-v2",
        "arn:aws:bedrock:us-east-1:123456789012:inference-profile/my-profile-id"
      ]
    }
  ]
}

```

The wildcard region (`*`) in the foundation-model ARN is mandatory because the actual inference may occur in any region covered by the profile.

## Implementation Examples

When invoking models, use the full profile ID rather than the base model ID. The SDK examples in [`skills/core-skills/amazon-bedrock/references/sdk-converse-api-typescript.md`](https://github.com/aws/agent-toolkit-for-aws/blob/main/skills/core-skills/amazon-bedrock/references/sdk-converse-api-typescript.md) and the Python equivalent demonstrate this pattern.

### TypeScript Implementation

```typescript
import { BedrockRuntimeClient, InvokeModelCommand } from "@aws-sdk/client-bedrock-runtime";

const client = new BedrockRuntimeClient({ region: "us-east-1" });

const command = new InvokeModelCommand({
  modelId: "global.anthropic.claude-sonnet-4-5-20250929-v1:0",
  contentType: "application/json",
  accept: "application/json",
  body: Buffer.from(
    JSON.stringify({
      prompt: "Explain cross-region inference benefits.",
      maxTokens: 512,
    })
  ),
});

const response = await client.send(command);
console.log(Buffer.from(response.body).toString("utf-8"));

```

### Python Implementation

```python
import boto3
import json

bedrock = boto3.client("bedrock-runtime", region_name="us-east-1")

response = bedrock.invoke_model(
    modelId="eu.anthropic.claude-sonnet-4-5-20250929-v1:0",
    contentType="application/json",
    accept="application/json",
    body=json.dumps({
        "prompt": "Analyze data residency requirements.",
        "max_gen_len": 512
    }).encode("utf-8")
)

print(json.loads(response["body"].read()))

```

## Architectural Considerations

When configuring cross-region inference profiles, consider these implementation details from the repository's core skill documentation.

### Routing Logic and Latency

The `global.` prefix maximizes throughput by utilizing any available commercial region, but may increase latency if Bedrock routes your request to a distant region under load. Geographic prefixes (`us.`, `eu.`, `apac.`) provide predictable latency by constraining routing to specific areas, though they limit the total available throughput pool.

### Error Handling

If you receive `ResourceNotFoundException` or `ValidationException: on-demand throughput isn't supported`, you are likely using a base model ID that requires an inference profile. Switch to the profile ID format (including the appropriate prefix) and retry. Detailed error handling patterns are documented in [`skills/core-skills/amazon-bedrock/references/model-invocation.md`](https://github.com/aws/agent-toolkit-for-aws/blob/main/skills/core-skills/amazon-bedrock/references/model-invocation.md).

### Agent Toolkit Integration

The Agent Toolkit scaffolding creates `global.` profiles by default when provisioning new agents in [`plugins/aws-agents/skills/agents-deploy/SKILL.md`](https://github.com/aws/agent-toolkit-for-aws/blob/main/plugins/aws-agents/skills/agents-deploy/SKILL.md). To use geographic constraints instead, modify the model loader configuration in your agent code, as shown in [`plugins/aws-agents/skills/agents-get-started/references/example-support-agent.md`](https://github.com/aws/agent-toolkit-for-aws/blob/main/plugins/aws-agents/skills/agents-get-started/references/example-support-agent.md).

## Summary

- **Cross-region inference profiles** combine foundation models with geographic prefixes (`us.`, `eu.`, `apac.`, `global.`) to control routing across AWS regions.
- **IAM policies** must include both the inference profile ARN and a wildcard foundation-model ARN (`arn:aws:bedrock:*::foundation-model/...`) to permit cross-region routing.
- **SDK implementations** require the full profile ID (e.g., `global.anthropic.claude-sonnet-4-5-20250929-v1:0`) rather than the base model ID in the `modelId` parameter.
- **Geographic prefixes** enforce data residency compliance, while `global.` prefixes maximize throughput and availability.

## Frequently Asked Questions

### What is the difference between a foundation model ID and an inference profile ID?

A foundation model ID (e.g., `anthropic.claude-sonnet-4-5-20250929-v1:0`) references a single model in a specific region. An inference profile ID (e.g., `global.anthropic.claude-sonnet-4-5-20250929-v1:0`) is a logical identifier that includes a routing prefix, allowing Bedrock to distribute requests across multiple regions. According to the source code in [`skills/core-skills/amazon-bedrock/references/model-selection-guide.md`](https://github.com/aws/agent-toolkit-for-aws/blob/main/skills/core-skills/amazon-bedrock/references/model-selection-guide.md), you must use the profile ID in your API calls to enable cross-region capabilities.

### Why does my IAM policy need a wildcard region for the foundation model?

The wildcard (`*`) in the foundation-model ARN (e.g., `arn:aws:bedrock:*::foundation-model/...`) is required because Bedrock may route your request to any region included in the inference profile. The IAM policy validates access to the underlying model regardless of which specific region processes the request, as documented in [`skills/core-skills/amazon-bedrock/references/agents-and-action-groups.md`](https://github.com/aws/agent-toolkit-for-aws/blob/main/skills/core-skills/amazon-bedrock/references/agents-and-action-groups.md).

### When should I use a geographic prefix instead of global?

Use geographic prefixes (`us.`, `eu.`, `apac.`) when you must ensure data residency within a specific geographic boundary for compliance reasons. Use the `global.` prefix when you need maximum throughput and availability, and data residency requirements allow processing in any AWS commercial region. The repository's cost-tracking reference notes that all profiles support tagging for usage attribution regardless of prefix type.

### How do I troubleshoot "ResourceNotFoundException" when using inference profiles?

This error typically indicates you are passing a base model ID to an operation that requires an inference profile ID. Verify that your `modelId` parameter includes the appropriate prefix (e.g., `us.` or `global.`). If you created the profile via CLI, ensure you are using the full profile ARN or ID as shown in [`skills/core-skills/amazon-bedrock/references/model-invocation.md`](https://github.com/aws/agent-toolkit-for-aws/blob/main/skills/core-skills/amazon-bedrock/references/model-invocation.md).