Enterprise developers operating in highly regulated sectors often find themselves at a crossroads where the convenience of global AI scaling clashes with the rigidity of national data laws. This week, the conversation in the infrastructure community has shifted toward the granular control of data residency, specifically for those deploying Claude Code within the Amazon Bedrock ecosystem. The challenge is no longer just about keeping data within a continent, but ensuring it never leaves a specific city-state or jurisdiction. When a compliance officer mandates that data must stay within the London region, a standard cross-region endpoint is no longer a tool—it is a liability.

The Architecture of Regional Isolation

Achieving strict data residency in Amazon Bedrock requires a fundamental choice between two distinct architectural paths: Mantle and Classic Bedrock. Most standard Bedrock workloads utilize Cross-Region Inference (CRIS) to optimize throughput and ensure high availability by routing requests to any available region within a geographic profile. For example, an EU cross-region profile might route a request to Frankfurt, Ireland, or Paris depending on load. While this satisfies general EU data residency, it fails the test of single-region isolation where the data must remain exclusively within one specific boundary, such as the London region (`eu-west-2`).

Mantle, identified by the `bedrock-mantle` endpoint, represents the modern approach to this problem. It is a native API implementation that integrates single-region routing directly into the endpoint logic. Currently, Mantle is available in seven key regions: Ireland, Stockholm, Tokyo, Melbourne, Northern Virginia, Ohio, and Oregon. For developers in these locations, Mantle eliminates the need for complex virtual resource definitions, allowing the entire lifecycle of a prompt—from submission to processing and response—to be locked within the specified region.

Conversely, Classic Bedrock, which utilizes the `bedrock-runtime` endpoint, relies on the legacy Invoke API. Unlike Mantle, Classic Bedrock cannot perform single-region routing by default. To achieve isolation here, developers must implement an Application Inference Profile. This is a critical distinction for users in regions like London, where Mantle is not yet supported. In such environments, the Classic Bedrock path is the only viable route to satisfy strict residency requirements, though it introduces additional layers of configuration complexity.

Implementing the Mantle Native Path

For those operating in the seven supported Mantle regions, the transition to single-region isolation is handled almost entirely through environment variables. The system is designed to interpret the `AWS_REGION` variable as a direct instruction for the endpoint, bypassing the need for the Application Inference Profiles that previously plagued Bedrock deployments. This streamlined flow allows teams to deploy the latest models, such as Claude 3.5 Sonnet, with minimal friction.

To activate this configuration, three specific environment variables must be defined in the shell. First, the Mantle endpoint is enabled by setting `CLAUDE_CODE_USE_MANTLE=1`. Second, the `AWS_REGION` must be set to the target region identifier. Finally, the `ANTHROPIC_DEFAULT_*_MODEL` variable is used to specify the desired model. It is important to note that this logic is only present in Claude Code version v2.1.94 and above. Any version prior to this release lacks the internal routing logic required to honor these variables, resulting in a failure to isolate data.

Verification of this setup is performed using the `/status` command within the Claude Code interface. A successful configuration will explicitly list the Provider as Amazon Bedrock (Mantle) and show a Region that matches the `AWS_REGION` variable. If the Provider is listed simply as Amazon Bedrock, it indicates that either the Mantle activation variable was ignored or the software version is outdated, meaning the requests may still be following a cross-region path.

Navigating Classic Bedrock and Inference Profiles

When the target region is London (`eu-west-2`), the Mantle path is unavailable, forcing a shift to Classic Bedrock. This path comes with stricter model limitations. Currently, single-region inference in London is restricted to Claude Opus 4.6 and Sonnet 4.6. Newer iterations, such as Opus 4.7 and 4.8, operate on a Geo-only basis, meaning they can be restricted to a geography but cannot be locked to a single region within that geography.

Because the system-defined inference profiles (those starting with `eu.` or `global.`) are designed for cross-region distribution, they are unsuitable for isolation. Furthermore, calling some foundation models directly by their Model ID often triggers on-demand throughput errors. The solution is to create a custom Application Inference Profile that points specifically to a model ARN within the London region.

This is achieved via the AWS CLI with the following command:

bash

aws bedrock create-inference-profile --model-source-arn arn:aws:bedrock:eu-west-2:111122223333:foundation-model/anthropic.claude-3-5-sonnet-20240620-v1:0

Upon execution, the CLI returns an `inferenceProfileArn` in the format `arn:aws:bedrock:eu-west-2:<account-id>:application-inference-profile/<id>`. This ARN becomes the primary identifier for Claude Code. To finalize the implementation, the developer sets `CLAUDE_CODE_USE_BEDROCK=1` to activate the Bedrock runtime API, sets `AWS_REGION` to `eu-west-2`, and assigns the generated `inferenceProfileArn` to the model variable. Beyond compliance, this method provides a significant administrative advantage: it allows for precise cost tracking and usage monitoring on AWS billing reports at the profile level.

Hardening Isolation with IAM Guardrails

Environment variables are a software-level configuration and are prone to human error. To prevent a simple typo from leaking data into another region, senior engineers implement physical blocks using IAM policies. By utilizing the `aws:RequestedRegion` condition, an organization can ensure that any API call not originating from or targeting the approved region is rejected at the identity level.

The following policy should be attached to the IAM Role or local user profile used by the developer:

{

"Version": "2012-10-17",

"Statement": [

{

"Effect": "Allow",

"Action": "bedrock:InvokeModel",

"Resource": "*",

"Condition": {

"StringEquals": {

"aws:RequestedRegion": "eu-west-2"

}

}

}

]

}

This policy creates a hard boundary. Even if a developer accidentally changes their `AWS_REGION` variable to `us-east-1`, the AWS IAM engine will deny the `InvokeModel` request because it does not match the `eu-west-2` requirement. There is a subtle difference in how this interacts with the two paths. Mantle manages resources at a project level, meaning IAM can control the region, but the specific model is still determined by the `ANTHROPIC_DEFAULT_*_MODEL` variable. To restrict the specific models used in Mantle, a Service Control Policy (SCP) is required. Classic Bedrock, however, allows for more surgical precision because the ARN encodes both the region and the model, allowing a single IAM policy to lock both variables simultaneously.

The final stage of validation involves AWS CloudTrail. By auditing the logs, engineers can verify that every single Bedrock call endpoint matches the designated single-region address. This provides the empirical evidence required for compliance audits, proving that the combination of software settings and infrastructure constraints has successfully isolated the data.

Regional Strategy for Global Teams

For teams operating in Asia, the Tokyo region (`ap-northeast-1`) is a strategic choice because it is fully supported by Mantle. This allows for rapid deployment of isolated environments without the overhead of creating inference profiles. The choice between Mantle and Classic Bedrock ultimately depends on the balance between velocity and granularity. If the primary goal is a fast setup for a compliant environment, Mantle is the superior choice. If the organization requires rigorous cost allocation per project or is operating in a non-Mantle region like London, the Classic Bedrock profile method is the only path forward.

When updating models, it is imperative to check the model card to ensure that single-region inference is supported for the new version in the chosen region. The final verification loop—running `/status` in Claude Code and auditing CloudTrail logs—ensures that the theoretical configuration matches the actual network traffic. By layering environment variables with IAM restrictions, developers create a fail-safe environment where data residency is not just a configuration, but a physical certainty.