llm-integration.eu

Claude on AWS Bedrock in the EU: 2026 Setup Guide

Run Claude Opus 5 and Sonnet 5 on AWS Bedrock with EU data residency: inference profiles, EU regions, IAM, boto3 code, 2026 prices and the pitfalls.

Updated 11 min readFacts verified on 18 September 2026

TL;DR

To run Claude on AWS Bedrock in the EU, call the EU geo inference profile (for example eu.anthropic.claude-sonnet-5) from an EU region, or use the bedrock-mantle endpoint in Ireland or Stockholm for single-region processing. Both cost 10% more than the global profile. Avoid global profiles if your data must stay in the EU.

Which Claude models run on Bedrock in the EU?

As of 18 September 2026, Claude Opus 5, Claude Sonnet 5 and Claude Haiku 4.5 are usable with EU data residency on Amazon Bedrock. Claude Fable 5.1 is the exception: its regional endpoint exists only in us-east-1, so in Europe you can reach it solely through the global endpoint, which routes worldwide. For the non-Claude models on the platform, our Amazon Bedrock guide lists which ones keep EU residency, and our Kimi K3 Bedrock analysis explains why the newest ones route globally.

The table below uses the IDs from the AWS model cards and the Anthropic Bedrock guide. Note that two different endpoints exist and they use different identifiers.

Model bedrock-runtime (EU geo profile) bedrock-mantle (single region) EU in-region locations
Claude Opus 5 eu.anthropic.claude-opus-5 anthropic.claude-opus-5 eu-west-1, eu-north-1
Claude Sonnet 5 eu.anthropic.claude-sonnet-5 anthropic.claude-sonnet-5 eu-west-1, eu-north-1
Claude Haiku 4.5 eu.anthropic.claude-haiku-4-5-20251001-v1:0 anthropic.claude-haiku-4-5 eu-west-1, eu-north-1
Claude Fable 5.1 not offered (global only) not offered in the EU none

Sonnet 5 launched on Bedrock on 30 June 2026 and Opus 5 on 24 July 2026. Both have a 1M token context window and 128K maximum output. Haiku 4.5 stays at 200K context and carries the nearest end of life: AWS lists it as no sooner than October 2026, so new projects should not build on it.

Frankfurt, Ireland or the EU profile: which endpoint should you pick?

Pick the EU geo profile when “data stays in the EU” is your requirement. Pick bedrock-mantle in eu-west-1 or eu-north-1 when your DPA or works council demands a single named region. Frankfurt (eu-central-1) cannot serve Opus 5 or Sonnet 5 in-region today; it only works as the source region for a profile.

This surprises many German teams. The AWS availability table for Sonnet 5 marks In-Region as unsupported in every European region on bedrock-runtime. Single-region inference exists only on the newer bedrock-mantle endpoint, and only in Ireland and Stockholm. Anthropic’s region table confirms this with the “In-region only” marker on exactly those two EU regions.

Option Where inference runs Price vs. global When to use it
Global profile (global.anthropic...) Any commercial AWS region worldwide Baseline No residency constraint, maximum throughput
EU geo profile (eu.anthropic...) One of several EU regions, chosen by AWS +10% “EU only” is enough, you want capacity headroom
bedrock-mantle in-region Exactly one region (Ireland or Stockholm) +10% Contract names one country or one region

Our position: the EU geo profile is the right default for most European companies. It meets the usual GDPR expectation of processing inside the EU, spreads load across regions and costs the same as in-region. Single-region only pays off when a contract or regulator names a specific country.

One detail matters for the EU profile. For Haiku 4.5, AWS documents the destination regions per source region. Called from Frankfurt, requests go to Frankfurt, Stockholm, Milan, Spain, Ireland or Paris. Called from London or Zurich, the profile also includes London or Zurich, which are outside the EU. Call the profile from an EU member state region and verify the list yourself, as shown below.

How do you set up Claude on Bedrock step by step?

Setting up takes four steps: grant IAM permissions scoped to the EU profile, confirm the destination regions, send a test request with the AWS CLI, then move the call into boto3 or the Anthropic SDK. Budget about one hour if your AWS Organization already allows Bedrock in the EU regions.

  1. Check model access. Anthropic states that Sonnet 5, Opus 4.8, Haiku 4.5 and the Fable models are open to all Bedrock customers. For Opus 5 the Anthropic guide refers you to the Bedrock model access page, so confirm access there first.
  2. Allow every destination region in your SCPs. AWS states that if any destination region of a geo profile is blocked by a Service Control Policy, the request fails even if other regions are allowed.
  3. Attach an IAM policy that allows the EU profile and pins the underlying model to that profile.
  4. Verify destinations and test, then integrate.

The IAM policy follows the pattern from the AWS inference profile prerequisites. Replace the account ID. The explicit deny blocks global routing, because a global request carries aws:RequestedRegion set to unspecified.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowEuProfile",
      "Effect": "Allow",
      "Action": ["bedrock:InvokeModel", "bedrock:InvokeModelWithResponseStream"],
      "Resource": "arn:aws:bedrock:eu-central-1:111122223333:inference-profile/eu.anthropic.claude-sonnet-5"
    },
    {
      "Sid": "AllowModelOnlyThroughEuProfile",
      "Effect": "Allow",
      "Action": ["bedrock:InvokeModel", "bedrock:InvokeModelWithResponseStream"],
      "Resource": "arn:aws:bedrock:*::foundation-model/anthropic.claude-sonnet-5",
      "Condition": {
        "StringLike": {
          "bedrock:InferenceProfileArn": "arn:aws:bedrock:eu-central-1:111122223333:inference-profile/eu.anthropic.claude-sonnet-5"
        }
      }
    },
    {
      "Sid": "DenyGlobalRouting",
      "Effect": "Deny",
      "Action": "bedrock:InvokeModel*",
      "Resource": "*",
      "Condition": { "StringEquals": { "aws:RequestedRegion": "unspecified" } }
    }
  ]
}

Now check where the profile can send your data, then send a first request. Both commands are single lines and copy-paste ready.

aws bedrock get-inference-profile --region eu-central-1 --inference-profile-identifier eu.anthropic.claude-sonnet-5 --query "models[].modelArn" --output table

aws bedrock-runtime converse --region eu-central-1 --model-id eu.anthropic.claude-sonnet-5 --messages '[{"role":"user","content":[{"text":"Summarise GDPR Article 28 in two sentences."}]}]' --inference-config '{"maxTokens":1024}'

The first command lists one model ARN per destination region. If a region you did not expect shows up, stop and escalate before any personal data flows.

What does the Python code look like?

Use boto3 with the EU geo profile if you already run on bedrock-runtime, Guardrails or Knowledge Bases. Use the Anthropic SDK against bedrock-mantle when you need single-region processing in Ireland or Stockholm. Both snippets below run as they are once your AWS credentials resolve through the standard credential chain. For developers who want Claude Code on the same EU profile, see our Claude Code Bedrock setup guide.

The boto3 variant with the Converse API:

# pip install boto3
import boto3

client = boto3.client("bedrock-runtime", region_name="eu-central-1")

response = client.converse(
    modelId="eu.anthropic.claude-sonnet-5",
    messages=[{"role": "user", "content": [{"text": "Draft a polite GDPR access-request reply."}]}],
    inferenceConfig={"maxTokens": 1024},
)

for block in response["output"]["message"]["content"]:
    if "text" in block:
        print(block["text"])
print(response["usage"])

The single-region variant uses the Messages API shape from the Anthropic guide. The IAM action here is bedrock-mantle:CreateInference, not bedrock:InvokeModel, so plan a separate policy.

# pip install -U "anthropic[bedrock]"
from anthropic import AnthropicBedrockMantle

client = AnthropicBedrockMantle(aws_region="eu-west-1")

message = client.messages.create(
    model="anthropic.claude-sonnet-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Draft a polite GDPR access-request reply."}],
)

print(next(block.text for block in message.content if block.type == "text"))

Sonnet 5 uses adaptive thinking by default, and thinking tokens count against max_tokens. If answers come back truncated, raise the limit before you blame the prompt.

What does Claude on Bedrock cost in the EU?

In the EU you pay the “Geo and In-region” rate, which is 10% above the global rate. For Sonnet 5 that means 2.20 USD per million input tokens and 11 USD per million output tokens. Opus 5 costs 5.50 and 27.50 USD. Frankfurt and N. Virginia show identical rates, billed in USD through AWS Marketplace.

The figures come from the Amazon Bedrock pricing page, EU (Frankfurt) selector, as published on 11 September 2026.

Model Global input / output EU geo or in-region input / output EU cache read Example: 10M in + 2M out per month (EU)
Claude Opus 5 5.00 / 25.00 5.50 / 27.50 0.55 110 USD
Claude Sonnet 5 2.00 / 10.00 2.20 / 11.00 0.22 44 USD
Claude Haiku 4.5 1.00 / 5.00 1.10 / 5.50 0.11 22 USD
Claude Fable 5.1 10.00 / 50.00 not available n/a n/a

All prices in USD per million tokens. Three cost levers matter more than the 10% residency premium:

  • Prompt caching. An EU cache read on Sonnet 5 costs 0.22 USD instead of 2.20 USD. Long system prompts and RAG context pay for the write after the first hit.
  • Batch. Opus 5 batch in the EU costs 2.75 / 13.75 USD, half the on-demand rate, for jobs that can wait.
  • Tokenizer. Anthropic notes that Claude 4.7 and later produce about 30% more tokens for the same text. If you budget from an older Sonnet 4.x run, add that margin.

Our view: the 10% premium is cheap insurance. Teams that route to the global profile to save 10% and then spend weeks on a data transfer impact assessment have not saved anything. If your staff only need the chat app rather than API access, compare the seat-based Claude pricing plans instead.

How does Bedrock handle your data?

Bedrock keeps Claude inference inside AWS. AWS documents that model providers, including Anthropic, have no access to the Bedrock deployment accounts, logs, prompts or completions. For most Claude models you can enforce zero data retention per region. The Fable models are the exception and require 30 days of retention for review.

The AWS data protection page explains the model deployment accounts that AWS operates per region and per provider. Anthropic’s own documentation confirms that on Bedrock the cloud provider, not Anthropic, is the data processor. Your contractual counterpart is AWS. You also do not need a Claude API key from Anthropic, since IAM handles authentication.

Retention is controlled by a per-region mode, documented on the Bedrock data retention page:

Mode What happens Relevant for
none Zero data retention, nothing written to durable storage Opus 4.8 and other models whose allowed modes include it
default Model default applies; AWS may retain for abuse prevention Most accounts today
aws_review Retained up to 30 days, AWS may review; provider never receives content Required for Fable 5 and Fable 5.1

Two consequences for EU projects. First, the setting is per region and does not propagate, so configure every EU region you use. Second, with cross-region inference, retained data is stored in the destination region that processed the request, which for the EU profile is still an EU region. You can enforce none organisation-wide with an SCP on the bedrock:DataRetentionMode condition key.

Which pitfalls cost EU teams the most time?

The expensive mistakes are not in the code. They are a global profile in production, SCPs that block one destination region, Frankfurt assumptions in contracts, and features that Bedrock does not support. Each of these has cost teams days, and each is avoidable with a short checklist before go-live.

  1. Global profile by copy-paste. AWS sample code uses global.anthropic... IDs. It works, it is 10% cheaper and it can process your data anywhere. Add the deny statement shown above.
  2. SCP blocks a destination region. Many organisations only allow Frankfurt. The EU profile then fails intermittently, depending on where AWS routes. Allow all destination regions listed by get-inference-profile.
  3. “Hosted in Frankfurt” in the contract. With the EU profile, Frankfurt is only the entry point. CloudTrail logs every request in the source region and records the actual processing region in additionalEventData.inferenceRegion. Write “processed in EU regions” instead.
  4. Missing features. Structured outputs are not supported for Sonnet 5 on either Bedrock endpoint, and bedrock-mantle lacks the Files API, Message Batches and server-side tools such as web search. Check the feature list before you port an app from the Anthropic API.
  5. Opt-in regions. AWS warns that cross-region inference can route to opt-in regions you never enabled, and that prompts may be stored there for abuse detection. Review the destination list, not just your enabled regions.
  6. Quotas. On bedrock-mantle the default is 2 million input tokens per minute. You can request up to 5 million input and 500,000 output tokens per minute without extra Anthropic approval.

If you are still choosing a cloud, our Claude on Google Vertex AI in Europe guide covers the Google side, and the GDPR comparison of Bedrock, Vertex, Foundry and the Anthropic API puts all four options in one decision matrix.

FAQ

These answers are written to stand alone, so you can link to a single question. They reflect the AWS and Anthropic documentation as read on 18 September 2026. Bedrock changes quickly, so check the model cards linked above before you sign a contract or change an architecture decision.

Can I run Claude Sonnet 5 only in Frankfurt?

No. As of September 2026, AWS does not offer in-region inference for Sonnet 5 or Opus 5 in eu-central-1. You can call the EU geo profile from Frankfurt, which keeps processing in EU regions, or use bedrock-mantle in Ireland (eu-west-1) or Stockholm (eu-north-1) for single-region processing.

How much more does EU data residency cost on Bedrock?

Exactly 10% on every token category. Sonnet 5 costs 2.20 USD instead of 2.00 USD per million input tokens and 11 USD instead of 10 USD per million output tokens. For a workload of 10 million input and 2 million output tokens a month, that is 44 USD instead of 40 USD.

EU geo profile vs. global profile: what is the real difference?

The EU profile routes only to EU regions defined in the profile and, per AWS, its destination list never changes. The global profile can route to any commercial AWS region worldwide and AWS adds regions over time. The global profile is about 10% cheaper, but it does not give you EU data residency.

Does Anthropic see my prompts when I use Claude on Bedrock?

According to AWS, no. Bedrock runs the model in AWS-owned deployment accounts that model providers cannot access, so Anthropic has no access to your prompts, completions or Bedrock logs. For the Fable models, AWS itself may retain and review content for up to 30 days, but it is still not shared with Anthropic.

Is Claude Fable 5.1 available in the EU on Bedrock?

Only through the global endpoint. Its regional endpoint currently exists only in us-east-1, and the Bedrock price list shows no Geo or In-region price for it. It also requires the aws_review retention mode, so it is a poor fit for workloads with strict EU residency or zero retention requirements.

Which code change moves an existing app from US to EU processing?

Change the region to an EU region and the model ID prefix from us. or global. to eu., for example eu.anthropic.claude-sonnet-5 with region_name="eu-central-1". Then update IAM and SCPs for the EU destination regions and set the data retention mode in each EU region you use.

Sources

  1. Anthropic docs: Claude in Amazon Bedrock (18 September 2026)
  2. AWS Bedrock docs: Claude Sonnet 5 model card (18 September 2026)
  3. AWS Bedrock docs: Claude Opus 5 model card (18 September 2026)
  4. AWS Bedrock docs: Claude Haiku 4.5 model card (18 September 2026)
  5. AWS Bedrock docs: Cross-Region inference (18 September 2026)
  6. AWS Bedrock docs: Supported Regions and models for inference profiles (18 September 2026)
  7. AWS Bedrock docs: Inference profile prerequisites (IAM) (18 September 2026)
  8. AWS Bedrock docs: Data retention (18 September 2026)
  9. AWS Bedrock docs: Data protection (18 September 2026)
  10. Amazon Bedrock pricing (18 September 2026)
  11. Anthropic docs: Pricing (18 September 2026)

Related guides