Devlery
Blog/Amazon

Claude Now Stays Inside Seoul and Singapore, but Only up to Opus 5

AWS opened in-region Claude inference on Amazon Bedrock in Seoul and Singapore on September 29. Requests never leave the Region, but the newest 5.5 generation is not on the list: Seoul gets Opus 5 and Sonnet 5, Singapore gets Sonnet 5 alone.

Claude Now Stays Inside Seoul and Singapore, but Only up to Opus 5
AI 요약
  • AWS opened in-region Claude inference in Seoul and Singapore on September 29.
  • Singapore gets Sonnet 5 only: 10.3% on Terminal-Bench 4.0, against 70.6% for Sonnet 5.5.
  • Neither PDPA nor MAS mandates data residency, so that trade is policy, not law.

On September 29, AWS opened a path that processes Claude entirely inside the Seoul and Singapore Regions of Amazon Bedrock. A prompt sent to Singapore, and the response to it, never leaves the Singapore data center. Seoul (ap-northeast-2) can call Claude Opus 5 and Claude Sonnet 5 this way. Singapore (ap-southeast-1) can call Claude Sonnet 5.

The announcement names its audience: financial services, healthcare, and the public sector in South Korea and Singapore that must keep data in-country. It cites no statute for either country, which is worth noticing, because the two countries are not in the same legal position.

Korea's Electronic Financial Supervisory Regulation requires financial companies handling personal credit information or unique identifying information to use a cloud information-processing system located inside Korea. Until September 29, Bedrock had no Claude path that satisfied that condition.

Singapore has no equivalent. The PDPA does not require personal data to stay on the island; it requires that an overseas recipient be bound to a comparable standard of protection. MAS imposes no data-residency rule on financial institutions either. Its revised Outsourcing Guidelines, in force since December 11, 2024, govern cloud risk management, not cloud geography. So for a Singapore team, in-region inference is not a compliance unlock. It is a stronger answer to a customer contract, a procurement questionnaire, or an internal policy that chose residency on its own.

Seoul is the outlier globally. In the Region table on the Claude Opus 5 model card, the only Region where in-region inference is supported on the bedrock-runtime endpoint is ap-northeast-2, the single such Region worldwide. Every other Region, us-east-1 included, offers only geographic or global routing.

Until now you could not choose where a request was processed

Bedrock has three ways to call a model, and Seoul and Singapore had access to exactly one of them.

Invocation pathModel IDWhere it runsAvailable in Seoul and Singapore
In-regionanthropic.claude-opus-5The one Region you calledYes, since September 29
Geo cross-region

us. eu. au. in. prefixes

Several Regions inside one geographyNo (there is no APAC geo profile)
Global cross-region

global. prefix

Any commercial Region worldwideYes (and it was the only option)

Claude Opus 5 and Sonnet 5 ship four geo profiles: us., eu., au., and in.. There is no APAC geo profile at all. India got in-country processing first, in early August, and received the in. profile with it. Korea and Singapore had no such middle option, which left global. as the only prefix that worked.

India was also Anthropic's first country-level processing launch in Asia Pacific. The August announcement named banks, insurers, and government agencies as the target. Seoul and Singapore are the second. Anthropic's Asia Pacific offices are Tokyo, Seoul, Bengaluru, and Sydney, and the Singapore office opens in October.

Global routing can send a request to any commercial Region on earth. The AWS documentation attaches a warning to it: "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." Stored data stays in the source Region, but where the inference itself runs is not pinned.

What September 29 removed is the routing layer. The announcement puts it this way: "Unlike cross-Region inference profiles, there is no routing layer. The request you send to the Seoul (ap-northeast-2) or Singapore (ap-southeast-1) Region is served by that Region alone. Your input prompts and output results stay within it for the full lifecycle of the request."

The cost appears in the same paragraph. Throughput is bounded by that Region's capacity, and per-Region service quotas apply as written. The buffer that let you borrow headroom by spreading requests across Regions is gone.

In exchange you give up the 5.5 generation

In-region inference tops out at the 5 generation. Claude Opus 5.5 and Claude Sonnet 5.5, both released in the last two weeks, plus Fable 5.1 and Mythos 5.1, can only be called in Seoul and Singapore through the global. profile. The In-Region column is unsupported for all of them on the model cards.

The generation gap is widest in agentic coding. Terminal-Bench 4.0 measures whether a model drives a long terminal task to completion on its own.

ModelTerminal-Bench 4.0In-region in SeoulIn-region in Singapore
Claude Sonnet 510.3%YesYes
Claude Opus 552.3%YesNo
Claude Opus 5.566.4%NoNo
Claude Sonnet 5.570.6%NoNo

The Sonnet line falls the hardest, and Singapore feels it most, because Sonnet 5 is the only in-region model there. Sonnet 5 scores 10.3%. Sonnet 5.5 scores 70.6%. That is a gap of more than 60 points, which means a Singapore team planning long agentic runs has no real in-region option at all. Seoul at least has Opus 5 at 52.3%, usable but 14.1 points below the 66.4% Opus 5.5 posts on the same test.

Both figures come from Anthropic's own announcements, measured against its first-party API rather than Bedrock. The comparison across generations still holds, because each announcement published the predecessor's score alongside the new one.

List price runs the other way: the newer model is cheaper. On Anthropic's price list, Opus 5 costs $5 per million input tokens and $25 for output. Its successor, Opus 5.5, costs $4 and $20. Pinning data to one Region means paying 25% more for a model that scores 14.1 points lower.

The routing path moves the unit price too. AWS documentation lists, among the benefits of the global profile, that you "save approximately 10% on both input and output token pricing compared to geographic cross-Region inference." Narrowing the Region costs more, not less. Actual per-token rates for Opus 5 and Sonnet 5 in Seoul and Singapore have to be read off the Bedrock pricing page.

Turning it on

In the console, open the Playground, find anthropic.claude-opus-5 in the model picker, and set Inference to On-Demand. That selects the in-region path. A separate dropdown picks cross-region profiles, so choosing wrong there gives you the same model running somewhere else.

Amazon Bedrock console model picker with Claude Opus 5 selected and Inference set to On-demand

In code, the whole change is dropping the prefix. Replace global.anthropic.claude-sonnet-5 with anthropic.claude-sonnet-5 and point the client at the right Region.

import boto3

# Singapore in-region inference
bedrock_runtime = boto3.client(
    service_name="bedrock-runtime",
    region_name="ap-southeast-1",
)

response = bedrock_runtime.converse(
    modelId="anthropic.claude-sonnet-5",
    messages=[{"role": "user", "content": [{"text": "Describe what Amazon Bedrock does"}]}],
    inferenceConfig={"maxTokens": 4096},
)

Three invocation surfaces are supported: the Anthropic Messages API, Bedrock InvokeModel, and Converse. Guardrails work unchanged. The announcement also claims support for intelligent prompt routing, but the capability tables on the Opus 5 and Sonnet 5 model cards mark that feature unsupported. If prompt routing is in your plan, trust the model card.

Operations get simpler rather than harder. CloudWatch metrics, CloudTrail logs, and quota consumption all land in the same Region, so there is no longer a source Region and a destination Region to reconcile.

The conditions in one place:

ItemCondition
Who can use itAny AWS account with Bedrock access. No waitlist, no separate application
Region availability

ap-southeast-1: Sonnet 5. ap-northeast-2: Opus 5 and Sonnet 5. Nowhere else

Elsewhere in APAC and the EU

No in-region path. Tokyo and Sydney get au. or global., the EU gets eu. or global.

PricingStandard on-demand rates for the Region you call
Requirements

AWS CLI, Python 3.8 or newer, boto3. For the Messages API, also anthropic and aws_bedrock_token_generator

LimitsPer-Region service quotas. Throughput bounded by that Region's capacity

Stopping a request from leaving by accident

Opening the in-region path does not keep it open. One line of code reverting to the global. prefix breaks the residency guarantee. AWS publishes a service control policy (SCP) to block that at the organization level.

{
  "Effect": "Deny",
  "Action": "bedrock:*",
  "Resource": "*",
  "Condition": {
    "StringEquals": { "aws:RequestedRegion": "unspecified" },
    "ArnLike": { "bedrock:InferenceProfileArn": "arn:aws:bedrock:*:*:inference-profile/global.*" }
  }
}

That condition checks for unspecified instead of a Region name for a reason. A call through the global profile also triggers an authorization check against a Region-agnostic foundation model ARN, and during that check aws:RequestedRegion resolves to unspecified rather than the real destination. An existing SCP that allowlists Region names will not block the call. Any team that believes it locked an account to one Region is exactly the team this catches.

If you call Bedrock today from Seoul or Singapore with global.anthropic.claude-*, start by dropping the prefix in staging and replaying the same prompt. A response means the in-region path is live on that account; silence points at model access or quota. The decision after that is a single one: measure what the 14.1-point drop from Opus 5.5 to Opus 5 (or the 60-point drop from Sonnet 5.5 to Sonnet 5) actually costs on your own workload, then decide whether residency is worth that much. In Korea the regulation may make the answer for you. In Singapore it will not, so the number has to.