- Newest
- Most votes
- Most comments
In certain regions (including eu-west-1), newer Bedrock models cannot be invoked directly by model ID. You must use an inference profile instead.
Step 1: Find the available inference profile
aws bedrock list-inference-profiles --region eu-west-1 \ --query "inferenceProfileSummaries[?contains(inferenceProfileName, 'Sonnet')].[inferenceProfileId,inferenceProfileName]" \ --output table
This will show profiles like:
eu.anthropic.claude-sonnet-4-20250514-v1:0— EU regional profileglobal.anthropic.claude-sonnet-4-20250514-v1:0— Global cross-region profile
Step 2: Use the inference profile ID instead of the model ID
response = bedrock.invoke_model( modelId="eu.anthropic.claude-sonnet-4-20250514-v1:0", # inference profile, not model ID contentType="application/json", accept="application/json", body=json.dumps({...}) )
Step 3: Update your IAM policy
The inference profile has a different ARN format than foundation models:
{ "Effect": "Allow", "Action": "bedrock:InvokeModel", "Resource": [ "arn:aws:bedrock:*::foundation-model/anthropic.*", "arn:aws:bedrock:eu-west-1:ACCOUNT_ID:inference-profile/eu.anthropic.*" ] }
Note the inference profile ARN includes your account ID and region, unlike foundation model ARNs.
Why this happens
AWS uses inference profiles to manage regional routing and capacity for newer models. The EU profile (eu.) routes requests to EU-based infrastructure, while the global profile (global.) can route cross-region. The direct model ID only works in regions where on-demand throughput is explicitly supported for that model.
References
The error you're encountering indicates that the specific Claude model you're trying to use requires an inference profile rather than direct model invocation. This is particularly relevant for newer Claude models that use cross-Region inference capabilities.
To resolve this issue, you need to use an inference profile ID instead of the direct model ID. Based on your region (eu-west-1), you should use a geographic cross-Region inference profile or a global inference profile.
Here's how to update your code:
import boto3 import json bedrock = boto3.client('bedrock-runtime', region_name='eu-west-1') # Use an inference profile ID instead of the direct model ID model_id = "eu.anthropic.claude-sonnet-4-20250514-v1:0" # Geographic profile # OR use global profile: "global.anthropic.claude-sonnet-4-20250514-v1:0" response = bedrock.invoke_model( modelId=model_id, contentType="application/json", accept="application/json", body=json.dumps({...}) )
The key change is replacing your model ID with an inference profile ID that starts with a geographic prefix (like eu.) or global. instead of just anthropic..
Additionally, you'll need to update your IAM policy to include permissions for cross-Region inference. Your policy should allow bedrock:InvokeModel on inference profile ARNs, not just foundation model ARNs. Make sure your IAM role or user has the necessary permissions to invoke Amazon Bedrock models using a cross-Region inference profile.
The inference profile automatically routes your requests to the optimal Region with available capacity, which helps with throughput and resilience while maintaining your data in compliant Regions when using geographic profiles.
Sources
Introducing Amazon Bedrock global cross-Region inference for Anthropic’s Claude models in the Middle East Regions (UAE and Bahrain) | Artificial Intelligence
Unlock global AI inference scalability using new global cross-Region inference on Amazon Bedrock with Anthropic’s Claude Sonnet 4.5 | Artificial Intelligence
Relevant content
- AWS OFFICIALUpdated 4 years ago
- AWS OFFICIALUpdated 4 years ago
- AWS OFFICIALUpdated a year ago

Vs 3.4 change to correct version it’ll probably not be confused browser search engines are not all equipped for more than simple letter number recognition to handle speed difference