,

Amazon Bedrock Regions, Quotas, and Cross-Region Inference (AWS Gen AI Series, Part 8)

Regions decide which models you can call and how much throughput you get. Here is how Bedrock quotas, token burndown, and cross-Region inference profiles fit together, and how to size a quota request that gets approved.

AWS Gen AI Series · Part 8 of 30

A model call that worked fine in testing threw ThrottlingException: Too many requests the first afternoon real traffic hit it. Nothing about the prompt changed. What changed is that we crossed a per minute quota in the one Region we had wired up, and every extra request past that ceiling bounced. This part is about the plumbing that decides whether your request runs at all: which Region processes it, what quota it counts against, and how cross-Region inference buys you headroom without a support ticket.

Key takeaways: A Region gives you an endpoint, a set of available models, and a private quota bucket that is separate from every other Region. On-demand throughput is governed by two limits per model per Region: requests per minute (RPM) and tokens per minute (TPM). Cross-Region inference profiles route a single call across several Regions in a geography (or globally) to raise effective throughput, with no extra routing charge and global routing running about ten percent cheaper. Provisioned Throughput does not work through inference profiles. Size a quota increase from your measured peak, not a guess.
Who this is for: You have called a model on Bedrock and seen it work. You know what on-demand versus provisioned means from Part 6. You have not yet had to reason about which Region runs the call, why you got throttled, or when to turn on cross-Region routing. No networking background assumed; VPC endpoints come in Part 9.

Where your data runs, and why the Region matters

A Region is one geographic cluster of AWS data centers, named like us-east-1 (Northern Virginia) or eu-west-1 (Ireland). For Bedrock, three things follow from the Region you pick. First, you get a Region specific API endpoint, bedrock-runtime.us-east-1.amazonaws.com for inference calls and bedrock.us-east-1.amazonaws.com for control plane work like listing models. Second, the model catalog differs by Region. A model that is generally available in Northern Virginia may not be enabled in Frankfurt for weeks, and some models never land in every Region. Third, and this is the one that bites people, your quotas are counted per Region. The TPM ceiling you have in us-east-1 does nothing for traffic you send to us-west-2.

That last point is why so many first production incidents look like the one I opened with. You test against one Region, throughput is tiny, everything passes. Then real users arrive, you cross the per minute limit in that single Region, and there is no automatic spillover to anywhere else unless you have set it up. Picking a Region is a data residency decision, a model availability decision, and a capacity decision all at once. Treat it as all three.

One practical habit. Before you commit an application to a Region, confirm the exact model you need is available there and that the quota you will get is enough, rather than assuming parity with Northern Virginia. Northern Virginia and Oregon (us-west-2) usually get models first and carry the highest default limits. If you have a residency requirement that forces you into an EU or APAC Region, check availability early, because it changes your model shortlist.

How a cross-Region inference profile routes one callOne request ID, picked destination Region varies per call to raise throughputYour appcalls us. profileInference profileUS geographyus-east-1us-west-2us-east-2
The profile picks the destination Region per request. Your code still makes one call and gets one response.

How RPM and TPM quotas actually work

On-demand inference is metered by two quotas that both apply per foundation model, per Region, per account. Requests per minute (RPM) caps how many API calls you can make. Tokens per minute (TPM) caps the total token throughput. Both are measured across the combined traffic of the Converse, ConverseStream, InvokeModel, and InvokeModelWithResponseStream operations for that model. Whichever ceiling you hit first is the one that throttles you, and in most real workloads that is TPM, because a single request with a long document can carry thousands of tokens.

Here is the part that surprises people. TPM is not counted one token to one unit for every model. Bedrock applies a burndown multiplier to output tokens on the higher end reasoning models, so an output token can cost several units against your TPM budget. The published rates as of mid 2026 put Anthropic Claude 4.8 at a fifteen times burndown on output tokens, Claude Sonnet 5 at ten times, Anthropic models at version 4.7 and below at five times, and everything else at one to one. If you plan capacity assuming raw token counts on a heavy reasoning model, your real ceiling arrives far sooner than the number on the quota page suggests.

Gotcha

The two Bedrock inference endpoints, bedrock-runtime and bedrock-mantle, track against separate quota buckets. The bedrock-runtime endpoint counts input and output tokens together against one per model TPM quota. The bedrock-mantle endpoint exposes separate input tokens per minute and output tokens per minute quotas. If you move traffic between endpoints and wonder why your throttling behaviour changed, this is why. Check which endpoint your SDK version defaults to.

Output token burndown by model familyUnits charged against TPM per output token, mid 202615x10x5x1xClaude 4.8Sonnet 5Claude 4.7-Others151051
Output tokens on heavy reasoning models drain your TPM budget many times faster than input tokens. Plan around this.

The numbers behind that chart are worth keeping in a table you can hand to whoever sizes your capacity.

Model familyOutput token burndownWhat it means for TPM
Anthropic Claude 4.815x1,000 output tokens burn 15,000 TPM units
Anthropic Claude Sonnet 510x1,000 output tokens burn 10,000 units
Anthropic Claude 4.7 and below5x1,000 output tokens burn 5,000 units
All other models1x1,000 output tokens burn 1,000 units

Reading your real quota numbers

Default quotas are not published as one fixed table you can trust for your account, because AWS adjusts them by Region, payment history, and usage. So do not plan against a number you read in a blog post, including this one. Read your own account. Bedrock now surfaces its per model quotas through the Service Quotas console and API, which AWS expanded in 2026, so you can query the applied value directly instead of inferring it from throttling.

The snippet below lists the cross-Region inference profiles available to you, then pulls the applied Bedrock quotas from Service Quotas so you can see your real RPM and TPM ceilings. Run it against the Region you actually serve from.

#!/usr/bin/env bash
# List system-defined inference profiles in your Region
aws bedrock list-inference-profiles 
  --type-equals SYSTEM_DEFINED 
  --region us-east-1 
  --query "inferenceProfileSummaries[].{id:inferenceProfileId,status:status}" 
  --output table

# Pull applied Bedrock quotas (RPM and TPM) from Service Quotas
aws service-quotas list-service-quotas 
  --service-code bedrock 
  --region us-east-1 
  --query "Quotas[?contains(QuotaName, 'Claude')].{name:QuotaName,value:Value}" 
  --output table
Expected output: the first command prints a table of profile IDs such as us.anthropic.claude-sonnet-5-... with status ACTIVE. The second prints quota names with their applied numeric values. Failure mode: an empty table from the second command usually means the filter string does not match your model name, not that you have zero quota. Drop the contains filter and list everything first, then narrow.

Cross-Region inference, and what the routing does

Cross-Region inference lets one API call be served from any of several Regions instead of just the one you called. You invoke an inference profile ID rather than a bare model ID, and Bedrock picks the destination Region per request. That is how you get past a single Region ceiling without buying Provisioned Throughput or filing a ticket. The system-defined profiles are named with a geography prefix, us., eu., or apac., followed by the model ID, for example us.anthropic.claude-sonnet-5-.... You can list them with the command above and confirm their type is SYSTEM_DEFINED.

A few facts settle most of the questions people ask. There is no extra routing charge; you pay based on the Region you called the profile from. Traffic between Regions stays on the AWS network and is encrypted in transit, so it never crosses the public internet. Requests can be routed to Regions you have not manually enabled in your account, so you do not need to turn each one on. And every call is logged in CloudTrail in your source Region, with the actual processing Region recorded in additionalEventData.inferenceRegion, which you will want for audits.

In practice

I default new production workloads to a cross-Region profile from day one, even when I think single Region capacity is enough. The failure mode of a single Region ceiling is silent until traffic spikes, and switching to a profile later means a code change under load. The one thing to confirm first is data residency: if a compliance rule pins you to a geography, use a geographic profile, not a global one.

Should you pick geographic or global routing

Bedrock offers two flavours of cross-Region inference and the choice is mostly about compliance versus cost. Geographic profiles keep processing inside a named boundary, US, EU, APAC, and so on, which is what you want when a regulation says data may not leave a region. Global profiles let Bedrock pick the best commercial Region anywhere in the world, which gives the highest throughput and, per AWS, roughly ten percent lower cost. The trade is that you give up the geographic guarantee.

FactorGeographic profileGlobal profile
Data residencyStays within the named geographyAny supported commercial Region worldwide
ThroughputHigher than single RegionHighest available
CostStandard pricingAbout 10 percent lower
SCP requirementAllow all destination Regions in the profileAllow aws:RequestedRegion set to unspecified
Best forResidency and compliance rulesCost and peak throughput

Watch the service control policy row. If your organization uses SCPs that restrict which Regions are allowed, a geographic profile needs every destination Region in that geography allowed, and a global profile needs the account to permit aws:RequestedRegion with the value unspecified. This is the most common reason a cross-Region call fails with an access denied error in a locked down landing zone. Fix the SCP, not the code.

Sizing a quota increase that gets approved

When cross-Region headroom is still not enough, you request a quota increase through Service Quotas. AWS guidance is to request an increase on the Cross-Region InvokeModel tokens per minute quota first, after which the team reaches out and can raise the related quotas together. The requests that get approved quickly are the ones with a number derived from measured demand, not a round figure someone liked. Measure your peak minute, apply the burndown multiplier for your model, add headroom, and ask for that.

Worked example

Say your peak is 40 requests per minute on Claude Sonnet 5, each averaging 800 input tokens and 600 output tokens. Input cost is 40 x 800 = 32,000 units. Output cost applies the 10x burndown: 40 x 600 x 10 = 240,000 units. Total peak demand is 272,000 TPM, dominated by output burndown. Add 40 percent headroom for spikes and you request roughly 380,000 TPM, not the 56,000 raw tokens per minute a naive count would suggest. Ask for the naive number and you will be throttled at peak on the day it matters.

Sizing the quota request, worked exampleTPM units at peak, Claude Sonnet 5, 40 RPM400k200k0Naive count56kReal demand272kRequested380k
The naive token count understates real demand almost fivefold here, entirely because of output burndown.
Before any production change: quota increases and profile switches change routing and cost behaviour. Test the new profile ID in a staging account, confirm CloudTrail shows the expected inference Regions, and check your SCPs allow the destinations before you cut production traffic over. The trap in a multi-account landing zone is a service control policy that pins Bedrock to a home Region, so a cross-Region or global profile routes to a Region the policy denies and every call fails with an access error that looks nothing like a quota problem.

What throttling looks like, and how to absorb it

Cross-Region routing and a sized quota reduce how often you hit a ceiling, but they do not remove throttling entirely. When you cross a per minute limit, Bedrock returns a ThrottlingException with HTTP 429, and the right response is to retry with exponential backoff rather than hammer the endpoint. The AWS SDKs give you this for free through retry modes. The default standard mode retries throttled calls with backoff; adaptive mode adds client side rate limiting that slows your own sending when it detects throttling, which smooths a bursty caller. Set the mode explicitly so behaviour does not drift with SDK versions.

One distinction worth holding onto. Cross-Region inference is a throughput tool, not a resilience tool you control. It raises your effective ceiling by spreading load, but you do not choose failover behaviour and you should not treat it as your Region outage plan. If you need true resilience against a Region going down, that is a separate architecture decision: an active setup in more than one Region with your own routing in front, which I cover with the reference architectures later in the series. Keep the two goals separate in your head, because conflating them leads to designs that satisfy neither.

My take

Turn on adaptive retry mode in any batch or high fan out job before you ask for a quota increase. Half the throttling I see in bursty pipelines comes from a client firing everything at once, not from a genuinely small quota. Fixing the sender is free and often removes the need for a larger limit.

Where I would start on Bedrock capacity

Pick your Region for residency and model availability first, then assume you will outgrow its single Region quota and design for cross-Region routing from the start. Use a geographic profile if a rule pins your data to a boundary; use a global profile when cost and peak throughput matter more and you have no residency constraint. Size every quota request from measured peak with the burndown multiplier applied, because output tokens on reasoning models are where the real cost hides. Read your own account with Service Quotas rather than trusting a default table, and keep CloudTrail on so you can prove where each request ran.

Next in the series I get into the network layer: how to reach Bedrock privately with PrivateLink and VPC endpoints so your traffic never touches a public route. That builds directly on the routing and residency choices here. Before you read it, run the two commands above so you know your real ceilings.

AWS Gen AI Series · Part 8 of 30
« Previous: Part 7  |  Guide  |  Next: Part 9 »

Related reading: the vendor-neutral NVIDIA AI Series covers the GPU side of throughput planning if you run your own inference stack.

References

Increase throughput with cross-Region inference, Amazon Bedrock User Guide
Quotas for Amazon Bedrock, Amazon Bedrock User Guide
How tokens are counted in Amazon Bedrock, token burndown rates

About The Author


Discover more from Journal of Intelligent Infrastructure – By Dr Pranay Jha

Subscribe to get the latest posts sent to your email.

Leave a Reply

Your email address will not be published. Required fields are marked *

Architect’s Toolkit

About the Author

Dr. Pranay Jha is a Cloud and AI Consultant with 18+ years of experience in hybrid cloud, virtualization, and enterprise infrastructure transformation. He specializes in VMware technologies, multi-cloud strategy, and Generative AI solutions. He holds a PhD in Computer Applications with research focused on Cloud and AI, has published multiple research papers, and has been a VMware vExpert since 2016 and a VMUG Community Leader.

Discover more from Journal of Intelligent Infrastructure - By Dr Pranay Jha

Subscribe now to keep reading and get access to the full archive.

Continue reading