Businesspublished

AWS Publishes Jamf’s Bedrock Budget Gate, Restricting Premium Models at 80% Spend

The open sample makes AI cost controls more operational: developers can keep working on a cheaper model, while premium access is automatically narrowed as each person approaches a daily limit.

By 4 min read
AWS Publishes Jamf’s Bedrock Budget Gate, Restricting Premium Models at 80% Spend
AWS Publishes Jamf’s Bedrock Budget Gate, Restricting Premium Models at 80% Spend

Listen to this story

The audio brief

About 1:31
0:001:31
Read transcript
AWS has published Jamf’s working pattern for putting a daily budget gate on Amazon Bedrock without cutting developers off from AI altogether. The key move is graduated access: once an engineer reaches 80 percent of a daily limit, Claude Opus is blocked. At 100 percent, Claude Sonnet is blocked too, but the cheaper Claude Haiku remains available. So the budget changes the cost of the next request rather than stopping work completely. The system calculates each person’s daily spend from Bedrock invocation logs, using token counts, model identity, and user identity. Those logs land in S3, and Athena turns them into a spending view. Every 15 minutes, a Lambda function checks the latest totals and any approved exceptions stored in DynamoDB, then updates IAM policies. The new restriction applies on the user’s next Bedrock request, usually within minutes, with no new sign-in. At midnight in the selected time zone, the same process resets access automatically. AWS estimates Lambda, DynamoDB, and S3 together cost under ten dollars a month for hundreds of engineers, though Athena can become more expensive as the volume of scanned log data grows. There is also an important safety requirement: unknown models are priced at the highest tier, so teams must update the pricing map whenever they enable something new. The pattern makes broad Bedrock access more controllable. The constraint to watch is operational accuracy—pricing, query design, and IAM policy maintenance all have to stay current.

Story brief

3 key points

On September 1, AWS published Jamf’s reference implementation for controlling per-engineer Amazon Bedrock costs without fully blocking access. The system calculates daily spend from Bedrock invocation logs, then uses Athena, Lambda, DynamoDB, and IAM policies to restrict expensive models at 80% and 100% of a user’s budget while retaining Haiku. Restrictions update on the next request, typically within minutes, and...

  1. 01

    AWS published Jamf’s Bedrock budget-control implementation and code on September 1.

  2. 02

    At 80% of a daily budget, Claude Opus is blocked; at 100%, Sonnet is blocked while Haiku remains available.

  3. 03

    Lambda recomputes restrictions every 15 minutes; IAM applies changes on the user’s next Bedrock request without reauthentication.

A developer who reaches a daily AI budget does not have to lose access to Amazon Bedrock entirely. Jamf’s production setup instead removes access to progressively pricier Claude models while preserving Claude Haiku, a lower-cost option. AWS published the implementation and its accompanying code on September 1, offering a concrete pattern for per-user AI spending controls.

The system is designed for a cost problem that arrives at the level of user behavior, not provisioned infrastructure. Jamf gave its engineering organization broad Bedrock access, then built controls that calculate each engineer’s daily use from invocation logs containing token counts, model identity and user identity.

A budget becomes an access decision

In AWS’s example configuration, access to Anthropic Claude Opus is denied once a person reaches 80% of a daily budget. At 100%, Claude Sonnet is also denied, but Claude Haiku remains available. The design is a graduated constraint: it reduces the cost of the next request instead of treating a budget threshold as a complete work stoppage.

The control loop changes permissions, not sessions

The enforcement handler cross-references spending with a DynamoDB table of individual exceptions, then publishes updated IAM Customer Managed Policy versions for users above each threshold. The policies identify users through a saml:sub condition and sit on the IAM permission set. Because IAM evaluates the new policy on the next Bedrock call, restrictions take effect within minutes without a new sign-in.

Diagram showing Bedrock logs flowing to S3 and Athena, with Lambda updating IAM policies based on daily spend.
The architecture separates spend measurement, enforcement decisions and IAM policy updates. Source: aws.amazon.com.

The reset is built into the same recomputation process. The Athena view uses a daily window beginning at midnight in a chosen reference time zone; after that window rolls over, users no longer over the threshold drop from the newly calculated restriction list. A fresh policy version then lifts the restriction, eliminating a separate unblock workflow.

Exceptions and pricing are part of the control plane

Jamf’s exception path is deliberately separate from editing access policies by hand. Administrators can use a Slack command to issue time-boxed higher limits; the system records who granted the exception, when it was granted and, optionally, its authorizing ticket. The next Lambda run incorporates an active exception into that engineer’s threshold.

The spend calculation depends on an explicit map of model token prices. Each model family needs its own pricing branch, and AWS’s sample prices an unrecognized model at the highest tier rather than at zero, so a new model cannot silently bypass enforcement. That fail-safe also creates an operational requirement: teams must update the price map promptly when they enable a new model.

The cheap components are not the whole bill

AWS says Lambda, DynamoDB and S3 cost well under $10 a month for hundreds of engineers in this use case. Athena is the component requiring closer sizing: its cost rises with data scanned and query frequency, and JSON logs force Athena to scan every byte even when a query selects only a few fields. AWS recommends consolidating queries or converting logs to a columnar format such as Parquet.

There are implementation constraints beyond cost. IAM managed policies retain at most five versions, so the enforcement function must remove the oldest non-default version before publishing another. Athena queries are asynchronous, requiring the function to submit, poll and then read results; its timeout must accommodate that sequence.

AWS presents the result as a governance pattern that enabled more AI access at Jamf because leadership could see and cap individual spending. The published sample makes that approach deployable for Bedrock users, but its reliability still rests on accurate model pricing, carefully sized log queries and correctly maintained IAM policy versions.

Sources

  1. aws.amazon.comTokenomics at scale: How Jamf built real-time spend enforcement for Amazon Bedrock | Amazon Web Services