AWS Builder Center

Bedrock Cross-Region Inference: A Resilience Playbook

Amazon Bedrock cross-Region inference boosts throughput up to 2x and adds failover—but it touches data residency. A builder's decision framework for choosing a profile.

Series: Best Practices (7 articles)

  1. 2
    Bedrock Cross-Region Inference: A Resilience Playbook This article
Lead Data Scientist

Bedrock Cross-Region Inference: Throughput, Resilience, and the Data-Residency Catch

There's a deceptively simple line in the Amazon Bedrock docs: swap your  modelId  for an inference profile ID and you get "up to 2x" your in-Region on-demand throughput plus automatic failover during peak demand. It sounds like free performance. It mostly is — but "route my traffic to another Region" is an architecture decision, not a config tweak, and the teams that treat it as the latter get surprised later by a data-residency review. Here's how I reason about it.

What cross-Region inference actually does

Instead of pinning every request to one Region's capacity, an inference profile lets Bedrock route each request to the best Region available at that moment, based on live latency, load, and availability. You keep calling Bedrock in your source Region; Bedrock decides where the tokens actually get processed. Three flavors matter:
  • Single-Region (in-Region): the classic default. All traffic hits one Region's on-demand quota. Simplest data story, lowest ceiling.
  • Geographic profile (e.g., US, EU): Bedrock picks the optimal Region within that geography. Higher throughput, resilience across Regions, data stays in the geography.
  • Global profile: Bedrock picks the optimal commercial Region anywhere. Highest throughput and the strongest resilience during regional peaks — but requests can leave your geography.
The throughput ordering is consistent: global > geographic > single-Region. On-demand users can see up to roughly 2x their allocated in-Region quota, and the throttling you hit during traffic spikes largely goes away because the load spreads.

The catch nobody reads until the security review

Cross-Region inference moves inference data — your prompts and completions — to whichever Region gets picked. For a global profile, "wherever there's capacity" can mean a Region outside your compliance boundary. That's fine for a lot of internal tooling and flatly unacceptable for regulated workloads with data-residency commitments.
Two things I always check before enabling a global profile:
  • SCPs and IAM alignment. If your org has a Service Control Policy restricting Bedrock to specific Regions, a global profile can conflict with it — requests fail, or worse, your residency guarantee is only as strong as a policy nobody kept in sync. Align the profile choice with the guardrails you've already committed to.
  • Region-contained RAG. Your model call is only half the data path. If the model routes globally but your Knowledge Base, vector store, and source documents live in one Region, you've split your data plane. Decide deliberately whether retrieval and inference share a boundary.
Cost is the pleasant surprise here: there's no premium for the routing itself — you're billed at your source Region's on-demand price regardless of where the request lands. So the tradeoff is genuinely throughput-and-resilience versus data-residency, not versus dollars.

A decision framework

Ask three questions in order:
  1. Do I have a hard data-residency requirement? If yes, you're choosing between single-Region and a geographic profile only — global is off the table. Pick the geographic profile matching your compliance boundary and move on; you still get resilience and higher throughput within the geography.
  1. Am I getting throttled or do I need spike resilience? If no (steady, low-volume workload well under quota), single-Region is fine and keeps your architecture boring. If yes, move up to geographic, then global as your ceiling and resilience needs grow.
  1. Is my whole data plane consistent with that choice? Retrieval, logging, and any PII handling should sit inside the same boundary as inference. If they don't, fix that before flipping the profile.
Wiring it up is trivial once you've decided — you pass the profile identifier where you'd normally pass the model ID:
python
Python
import boto3
runtime = boto3.client("bedrock-runtime", region_name="us-east-1")

resp = runtime.converse(
modelId="us.anthropic.claude-...-v1:0", # a US geographic inference profile ID
messages=[{"role": "user", "content": [{"text": "Summarize this ticket."}]}],
)
The  us.  /  eu.  prefix (or a global profile ID) is the whole switch. Your application code doesn't change; your architecture posture does.

What I'd do

For most non-regulated production workloads, I default to a geographic profile from day one. It's the sweet spot: meaningfully higher throughput, real resilience against single-Region peaks, no cost premium, and a data boundary you can still explain to a security reviewer. I only reach for a global profile when I've hit the geographic ceiling and I've confirmed there's no residency constraint — and I only stay single-Region for genuinely low-volume or strictly-pinned workloads. The mistake I see most is teams leaving everything single-Region "for safety," eating avoidable throttling, when a geographic profile would have given them headroom for free.
How are you drawing your inference boundary — global for throughput, or geographic to keep the compliance team happy? Curious where others land.
#AWS #Bedrock #GenAI #CloudArchitecture #Resilience #MachineLearning

Series: Best Practices (7 articles)

  1. 2
    Bedrock Cross-Region Inference: A Resilience Playbook This article
Any opinions in this article are those of the individual author and may not reflect the opinions of AWS.
Enjoyed reading this content? Let the author know!

Your likes, comments, shares, and saves help creators reach more builders.

Loading recommendations

Loading article