← All posts

May 12, 2026

Claude Code on AWS Bedrock: An Enterprise Architecture Your CFO, CIO, and CISO Will All Sign Off On

Claude Code on AWS Bedrock — architecture diagram showing the developer laptop calling Bedrock through IAM Identity Center and PrivateLink, with CloudTrail, CloudWatch, and Cost & Usage capturing audit, metrics, and tagged spend.
Enterprise architecture

Same tool developers already love. Your cloud. Your rules.

Deep-dive · ~10 min read

Claude Code is a fantastic coding assistant. The problem in most enterprises isn't whether developers want it — they do. The problem is that the default setup (devs paying with their own keys, prompts traversing the public internet, no central visibility) makes finance, security, and compliance teams break out in hives.

Running Claude Code through AWS Bedrock fixes that. Same tool. Your cloud. Your rules.

This post walks through the architecture, then unpacks what it gives each seat at the leadership table: cost control per individual, real usage telemetry, locked-down ingress and egress, and an ROI story you can actually defend.

The architecture in one paragraph

Developers install Claude Code on their laptops as normal. But instead of calling Anthropic's API directly, the CLI is configured to call Amazon Bedrock in your AWS account. You set CLAUDE_CODE_USE_BEDROCK=1 and an AWS region, then authenticate with IAM (typically through AWS IAM Identity Center / SSO). Bedrock fronts the Claude models. From there, every prompt, completion, token count, and error becomes data inside your AWS account — logged, metered, billed, and governed exactly like any other AWS workload.

The diagram is short:

Developer laptop
   └── Claude Code CLI  (CLAUDE_CODE_USE_BEDROCK=1)
        └── AWS SSO / IAM credentials
             └── VPC Endpoint (PrivateLink) — optional but recommended
                  └── Amazon Bedrock (Claude Sonnet / Haiku / Opus)
                       ├── CloudTrail   → audit
                       ├── CloudWatch   → metrics & logs
                       └── Cost & Usage → tagged spend

Nothing exotic. That's the point. It's the same control plane your team already uses for S3, RDS, and Lambda.

Identity: who can call which model

Authentication is plain IAM. You give each developer (or each team's role) permission to call bedrock:InvokeModel and bedrock:InvokeModelWithResponseStream for the specific Claude model IDs you've approved. Different teams can be granted different model tiers — for example, the platform team gets Opus for hard refactors, while support engineering gets Sonnet for ticket triage.

This matters more than it sounds. It means you can:

Cost control per individual

This is the part finance cares about most. With the default Anthropic API, a hot loop in someone's automation script can quietly burn five-figure sums before anyone notices. On Bedrock, you can prevent that structurally.

Three mechanisms work together:

Cost allocation tags

Bedrock invocations can be tagged with the calling principal (the IAM user or assumed role), the team, the cost centre, and the project. Once tags are activated in Billing, every dollar of inference shows up in Cost Explorer broken out by whatever dimensions you care about.

AWS Budgets with per-tag scope

You create a monthly budget scoped to user=alice@company.com (or team=platform, or costcenter=R&D-1234) and set thresholds at, say, 50%, 80%, and 100%. SNS sends alerts to Slack or email at each threshold. At 100% you can trigger a Lambda to detach the IAM policy, effectively capping spend per seat.

Provisioned Throughput, if you need a hard ceiling

For predictable workloads, you can buy committed throughput on a specific Claude model. You pay a fixed hourly rate, get guaranteed capacity, and never exceed your committed spend — useful when finance wants a flat line on the cash-flow forecast.

The combination is what's new. Per-seat AI budgets, enforced by infrastructure rather than by hoping people read the email about being responsible.

Usage you can actually measure

CloudWatch surfaces Bedrock metrics natively: input tokens, output tokens, invocations, latency, throttles, errors — sliced by model, by region, and (with a small bit of plumbing) by user.

Most enterprises stand up a simple usage dashboard within a day:

Pair the dashboard with model invocation logging, where Bedrock writes the full request and response to an S3 bucket or CloudWatch Logs group you own. This isn't required, but it's gold for two reasons. First, it lets your security team run DLP scans over outbound prompts to make sure nothing sensitive is being leaked into context windows. Second, it gives the platform team a corpus to study — which questions are devs actually asking? Where are they getting stuck? That's a feedback loop you cannot build with a vendor-hosted black box.

Security: ingress and egress, in detail

Most AI deals die on the egress conversation. "If we send code to a third party, what happens to it?" Bedrock removes that question almost entirely.

Egress. With a VPC endpoint for Bedrock (PrivateLink), traffic from your developer laptops — when routed through your corporate VPN or zero-trust agent — never traverses the public internet to reach Bedrock. It stays on the AWS backbone. You can layer endpoint policies on the VPC endpoint to restrict which models can be called, from which principals, and on which networks.

Ingress. Same story in reverse. Responses come back over the same private path. No model output is broadcast anywhere outside your AWS account. CloudTrail records every API call — who, what, when, from which IP. Your SIEM ingests it the same way it ingests every other AWS API call.

Data handling. This is the line that closes the deal: Bedrock does not use your inputs or outputs to train models. Full stop. Combine that with KMS encryption at rest on the S3 buckets you use for invocation logging, and you have a story that satisfies most regulated industries — financial services, healthcare, government — without bespoke contracts.

Guardrails. Bedrock Guardrails can sit in front of model calls to redact PII, block specific topics, or filter out content categories you don't want flowing through. For teams handling regulated data, this is a useful seatbelt.

ROI: stop guessing, start measuring

The question every CTO eventually asks is some version of "are we actually getting value from this?" With Bedrock, you can answer it properly.

You already have the inputs:

The interesting numbers come from joining these. Cost per merged PR. Cost per closed ticket. Cycle-time delta between heavy and light Claude Code users on comparable teams. These are the metrics that let you tell a real story to the board — not "developers say they like it" but "we're shipping 23% more features at a marginal AI cost of $40 per feature."

It also lets you spot the inverse: a team burning tokens but not shipping more. That's either a workflow problem, a training gap, or the wrong tool for that team's work — all things you'd want to know.

A sensible rollout

A pattern that works:

This is not a six-month transformation. It's a series of small AWS configuration changes, most of which your platform team can do in an afternoon.

The summary you can take into a leadership meeting

Claude Code on AWS Bedrock is the same productivity lift developers already love, wrapped in the operational and security primitives your enterprise already trusts. Cost is controllable per individual and observable per team. Code and prompts never leave your AWS boundary. Audit trails are complete. ROI is measurable, not anecdotal.

If you are already an AWS shop, the cost of trying this is a weekend of platform-team work. The cost of not trying it is watching competitors ship faster while you wait for a procurement process that doesn't need to happen.


References