Global cross-Region inference
Global cross-Region inference extends cross-Region inference beyond geographic boundaries, enabling the routing of inference requests to supported commercial AWS Regions worldwide.
Benefits of global cross-Region inference
With global cross-Region inference for the Anthropic Claude Sonnet 4.5 model, you get the following advantages over a geographic cross-Region inference profile:
-
Cost-efficiency – You save approximately 10% on both input and output token pricing compared to geographic cross-Region inference. Amazon Bedrock calculates the price based on the AWS Region from which you make the request (the source AWS Region).
-
Streamlined monitoring – When using global cross-Region inference, CloudWatch and CloudTrail continue to record log entries in your source AWS Region, simplifying observability and management. Even though your requests are processed across different AWS Regions worldwide, you maintain a centralized view of your application's performance and usage patterns through your familiar AWS monitoring tools.
-
Worldwide request routing – With global cross-Region inference, your requests can be processed by compute across supported commercial AWS Regions worldwide rather than within a single geography.
Global cross-Region inference considerations
Note the following information about Global cross-Region inference:
-
For default cross-Region throughput quotas when using Global inference profiles, see the Global Cross-region model inference requests per minute for ${Model} and Global Cross-region model inference tokens per minute for ${Model} values in Amazon Bedrock service quotas in the AWS General Reference.
You can request, view, and manage quotas for the Global Cross-Region Inference Profile from the Service Quotas console
or by using AWS CLI commands in your source region.
IAM policy requirements for global cross-Region inference
To enable global cross-Region inference for your users, you must apply a
three-part IAM policy to the role. The following is an example IAM policy to
provide granular control. You can replace <REQUESTING REGION> in
the example policy with the AWS Region you are operating in.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GrantGlobalCrisInferenceProfileRegionAccess", "Effect": "Allow", "Action": "bedrock:InvokeModel", "Resource": [ "arn:aws:bedrock:<REQUESTING REGION>:<ACCOUNT>:inference-profile/global.<MODEL NAME>" ], "Condition": { "StringEquals": { "aws:RequestedRegion": "<REQUESTING REGION>" } } }, { "Sid": "GrantGlobalCrisInferenceProfileInRegionModelAccess", "Effect": "Allow", "Action": "bedrock:InvokeModel", "Resource": [ "arn:aws:bedrock:<REQUESTING REGION>::foundation-model/<MODEL NAME>" ], "Condition": { "StringEquals": { "aws:RequestedRegion": "<REQUESTING REGION>", "bedrock:InferenceProfileArn": "arn:aws:bedrock:<REQUESTING REGION>:<ACCOUNT>:inference-profile/global.<MODEL NAME>" } } }, { "Sid": "GrantGlobalCrisInferenceProfileGlobalModelAccess", "Effect": "Allow", "Action": "bedrock:InvokeModel", "Resource": [ "arn:aws:bedrock:::foundation-model/<MODEL NAME>" ], "Condition": { "StringEquals": { "aws:RequestedRegion": "unspecified", "bedrock:InferenceProfileArn": "arn:aws:bedrock:<REQUESTING REGION>:<ACCOUNT>:inference-profile/global.<MODEL NAME>" } } } ] }
The first part of the policy grants access to the Regional inference profile in your requesting AWS Region. The second part provides access to the Regional FM resource. The third part grants access to the global FM resource, which enables the cross-Region routing capability.
When implementing these policies, include all three resource Amazon Resource Names (ARNs) in your IAM statements:
-
The Regional inference profile ARN follows the pattern
arn:aws:bedrock:REGION:ACCOUNT:inference-profile/global.MODEL-NAME. Use this ARN to grant access to the global inference profile in the source AWS Region. -
The Regional FM uses
arn:aws:bedrock:REGION::foundation-model/MODEL-NAME. Use this ARN to grant access to the FM in the source AWS Region. -
The global FM requires
arn:aws:bedrock:::foundation-model/MODEL-NAME. Use this ARN to grant access to the FM in different global AWS Regions.
The global FM ARN has no AWS Region or account specified, which is intentional and required for the cross-Region functionality.
Disable global cross-Region inference
You can choose from two primary approaches to implement deny policies to global CRIS for specific IAM roles, each with different use cases and implications:
-
Remove an IAM policy – The first method involves removing one or more of the three required IAM policies from user permissions. Because global CRIS requires all three policies to function, removing a policy will result in denied access.
-
Implement a deny policy – The second approach is to implement an explicit deny policy that specifically targets global CRIS inference profiles. This method provides clear documentation of your security intent and makes sure that even if someone accidentally adds the required allow policies later, the explicit deny will take precedence. The deny policy should use a
StringEqualscondition matching the pattern"aws:RequestedRegion": "unspecified". This pattern targets the Region-agnostic global foundation model resource evaluation required by Global cross-Region inference.
When implementing deny policies, it's crucial to understand that global CRIS
changes how the aws:RequestedRegion field behaves. Traditional
AWS Region-based deny policies that use StringEquals conditions
with specific AWS Region names such as "aws:RequestedRegion":
"us-west-2" don't target the Region-agnostic global foundation model
resource evaluation. For this evaluation, the service sets
aws:RequestedRegion to unspecified rather than the
actual destination AWS Region. Therefore, a condition that matches
"aws:RequestedRegion": "unspecified" can deny global
CRIS.
Service Control Policy requirements for Global cross-Region inference
For Global cross-Region inference, if your organization's security policy uses
SCPs to block unused Regions, you can either update your Region-specific SCP
conditions to allow access with
"aws:RequestedRegion": "unspecified" or add an inference-profile
exception as described in the following note. Allowing unspecified
ensures that requests can be routed to all supported AWS commercial
Regions.
Note
When a request uses a Global cross-Region inference profile, Amazon Bedrock evaluates
authorization for the inference profile resource, the foundation model in the
source Region, and the Region-agnostic global foundation model ARN
arn:aws:bedrock:::foundation-model/..., for which
aws:RequestedRegion is unspecified. The
bedrock:InferenceProfileArn condition key is populated for the
foundation model resource evaluations, but not for the inference profile
resource evaluation.
Because the global foundation model resource evaluation carries
unspecified, you can use
bedrock:InferenceProfileArn in a Region-deny SCP to exempt
cross-Region routing without adding unspecified to the Region
allowlist for other services and actions. This exemption can't bypass the
Region restriction on the originating call. The inference profile resource
evaluation carries the source Region and doesn't include
bedrock:InferenceProfileArn.
The following example shows the first approach. The SCP blocks all AWS API
calls outside of approved Regions while allowing Amazon Bedrock Global cross-Region inference
calls that use "unspecified" as the Region for global routing:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAllOutsideApprovedRegions", "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "StringNotEquals": { "aws:RequestedRegion": [ "us-east-1", "us-east-2", "us-west-2", "unspecified" ] } } } ] }
Disable global cross-Region inference
Organizations with data residency or compliance requirements should assess whether Global cross-Region inference fits their compliance framework, since requests may be processed in other supported AWS commercial Regions. To explicitly disable Global cross-Region inference, implement the following SCP policy:
{ "Effect": "Deny", "Action": "bedrock:*", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": "unspecified" }, "ArnLike": { "bedrock:InferenceProfileArn": "arn:aws:bedrock:*:*:inference-profile/global.*" } } }
This SCP explicitly denies Global cross-Region inference because the
"aws:RequestedRegion" is "unspecified" and the
"ArnLike" condition targets inference profiles with the
global prefix in the ARN.
AWS Control Tower implementation
Manually editing SCPs managed by AWS Control Tower is strongly discouraged as it can cause drift. Instead, use the mechanisms provided by Control Tower to manage these exceptions. The core principles involve either extending existing region-deny controls or enabling regions and then applying a custom, conditional blocking policy.
For detailed, step-by-step guidance on implementing cross-Region inference
with Control Tower, see the blog post Enable Amazon Bedrock cross-Region inference in multi-account
environments
Request limit increases for global cross-Region inference
When using global CRIS inference profiles, you can use global CRIS from over 20 supported source AWS Regions. This is a global limit. To view, manage, or increase quotas for global cross-Region inference profiles, use the Service Quotas console or AWS CLI in the requested source AWS Region.
Complete the following steps to request a limit increase:
-
Sign in to the Service Quotas console in your AWS account.
-
In the navigation pane, choose AWS services.
-
From the list of services, find and choose Amazon Bedrock.
-
In the list of quotas for Amazon Bedrock, use the search filter to find the specific global CRIS quotas. For example:
-
Global cross-Region model inference tokens per minute for Anthropic Claude Sonnet 4.5 V1
-
-
Select the quota you want to increase.
-
Choose Request increase at account level.
-
Enter your desired new quota value.
-
Choose Request to submit your request.
When calculating your required quota increase, account for the burndown rate. The burndown rate is the rate at which input and output tokens are converted into token quota usage for the throttling system. The following models have a 5x burn down rate for output tokens (1 output token consumes 5 tokens from your quotas):
-
Anthropic Claude Opus 4
-
Anthropic Claude Sonnet 4.5
-
Anthropic Claude Sonnet 4
-
Anthropic Claude 3.7 Sonnet
For all other models, the burndown rate is 1:1 (1 output token consumes 1 token from your quota). For input tokens, the token to quota ratio is 1:1. The calculation for the total number of tokens per request is as follows:
Input token count + Cache write input tokens + (Output token count x
Burndown rate)
Use Global cross-Region inference
To use global cross-Region inference with Anthropic's Claude Sonnet 4.5, developers must complete the following key steps:
-
Use the global inference profile ID – When making API calls to Amazon Bedrock, specify the global Anthropic's Claude Sonnet 4.5 inference profile ID (
global.anthropic.claude-sonnet-4-5-20250929-v1:0) instead of a AWS Region-specific model ID. -
Configure IAM permissions – Grant appropriate IAM permissions to access the inference profile and FMs in potential destination AWS Regions.
Global cross-Region inference is supported for:
-
On-demand model inference
-
Batch inference
-
Agents
-
Model evaluation
-
Prompt management
-
Prompt flows
Note
Global inference profile is supported for On-demand model inference, Batch inference, Agents, Model evaluation, Prompt management, and Prompt flows.
Implement global cross-Region inference
Implementing global cross-Region inference with Anthropic's Claude Sonnet 4.5 is straightforward, requiring only a few changes to your existing application code. The following is an example of how to update your code in Python:
import boto3 import json bedrock = boto3.client('bedrock-runtime', region_name='us-east-1') model_id = "global.anthropic.claude-sonnet-4-5-20250929-v1:0" response = bedrock.converse( messages=[{"role": "user", "content": [{"text": "Explain cloud computing in 2 sentences."}]}], modelId=model_id, ) print("Response:", response['output']['message']['content'][0]['text']) print("Token usage:", response['usage']) print("Total tokens:", response['usage']['totalTokens'])