Back to News
EnterpriseAI Understanding briefing

AWS details Jamf’s near-real-time spending controls for Amazon Bedrock

Jamf built a system that tracks engineers’ daily Bedrock usage and progressively restricts access to expensive models as users approach individual budgets.

By 5 min readRead the primary source
Source-provided image accompanying AWS details Jamf’s near-real-time spending controls for Amazon Bedrock
The short version

Jamf built a system that tracks engineers’ daily Bedrock usage and progressively restricts access to expensive models as users approach individual budgets.

What happened

AWS says Jamf built and production-tested a serverless system for monitoring and enforcing per-user Amazon Bedrock spending limits. The system uses Bedrock invocation logs, Amazon Athena, DynamoDB, AWS Lambda, EventBridge schedules, IAM Customer Managed Policies and Slack notifications.

In a post dated 1 September 2026, AWS described how Jamf addressed the cost of broad access to Amazon Bedrock for its engineering organization. AWS says Jamf, which it describes as serving more than 76,000 organizations with Apple-device management and security products, expanded Bedrock access to support AI-assisted development. The company then needed per-user visibility and accountability as usage increased. The post presents Jamf’s implementation as a production-tested pattern rather than a new Bedrock model or a change to Bedrock’s public pricing.

The system measures each engineer’s daily Bedrock spending from invocation logs written to an Amazon S3 bucket. Those logs include the model identifier, input and output token counts and user identity. An Amazon Athena view calculates daily spend by applying published Bedrock rates to those token counts. AWS instructs adopters to update the view for the rates in their region and to add an explicit pricing branch whenever a new model is enabled. Unknown models are assigned the highest tier as a fail-safe until their actual rate is added.

An AWS Lambda function runs every 15 minutes through an Amazon EventBridge schedule. It reads the current day’s spend from Athena, checks a DynamoDB table for approved exceptions and maintains user state so each threshold notification is sent once. When a user crosses a threshold, the function publishes a new version of an IAM Customer Managed Policy. The policy uses the user’s saml:sub identity value to deny access to specified model families. AWS says the revised policy is evaluated on the engineer’s next Bedrock call and does not require re-authentication.

The example enforcement pattern keeps a lower-cost model available while restricting more expensive models at progressively higher spending levels. AWS gives an illustrative configuration in which Claude Opus access is denied at 80% of a daily budget and Claude Sonnet at 100%, while Claude Haiku remains available. A Slack slash command, /bedrock-limit, lets authorized administrators grant a time-boxed higher limit for cases such as a migration, a customer escalation or a model evaluation. The exception record includes an expiry time and audit information, and DynamoDB TTL is used to remove expired entries automatically.

Source details: aws.amazon.com

Why it matters

The approach addresses a practical barrier to enterprise AI adoption: model costs can vary with user behavior and agentic workloads, making spending difficult to predict. Jamf’s design offers a way to expand access while retaining user-level visibility and graduated controls, although the source provides no independent measurement of productivity gains or return on investment.

The practical issue is that generative-AI costs are behavior-driven. A developer running an extended agentic coding loop can generate substantially more token usage than a conventional, provisioned computing workload would suggest. Per-user limits give an organization a way to connect usage to an identity and a time window, rather than waiting for an aggregate cloud bill. That is especially relevant when premium models have materially different rates or when autonomous workflows can repeat calls without a human reviewing every step.

The design also treats cost control as a deployment and access-management problem. Instead of stopping all Bedrock access after a budget is reached, it applies model-specific restrictions and preserves a cheaper fallback. That can reduce the operational impact of a cap, but it does not guarantee that work will continue at the same quality or speed. The source does not report how many Jamf engineers use the system, the company’s actual thresholds, the amount spent before and after deployment, or measured productivity and ROI results. AWS’s statement that productivity climbed and that governance enabled broader access remains a company account, not an independently verified outcome.

The architecture is notable for its relatively small set of managed services and its idempotent enforcement logic. Each Lambda run recomputes the full restricted-user list from cumulative daily spend, so a missed or repeated run does not require a separate rollback path. The daily reset is also derived from the time-bounded Athena view. AWS says Lambda, DynamoDB and S3 cost well under $10 per month for hundreds of engineers in Jamf’s use case, but it identifies Athena as the major variable cost. That estimate is specific to the reported workload and configuration, not a general cost guarantee.

What to watch next

The main operational risks are pricing changes, incomplete cost data, policy-version limits, Athena query costs and the 15-minute enforcement cycle. Organizations adopting the pattern will need to test how quickly restrictions apply, validate model pricing, preserve an affordable fallback model and govern exceptions.

The largest technical concern is the source data and pricing map. Bedrock logs must contain enough identity and token information to support enforcement, and every enabled model needs a current regional rate. AWS says an unmapped model is priced at the highest tier to prevent a new model from bypassing controls, but that safeguard could temporarily restrict users if the pricing branch is not updated. The source does not describe reconciliation against the final AWS bill, treatment of refunds or credits, or how usage from failed, retried or cached requests is handled.

Query design will affect both cost and timeliness. AWS reports that four differently filtered queries over the same JSON view each scanned about 11 GB because row-oriented JSON must be deserialized before filtering. It recommends combining derived queries into one grouped query and separating the results in application code, or converting the logs to a columnar format such as Parquet. Athena queries are asynchronous, so the Lambda function must submit and poll them and have a timeout long enough to complete. The source does not provide observed end-to-end latency or a guarantee that every restriction will take effect within a particular number of minutes.

Administrators will need to examine the control plane as carefully as the cost calculation. AWS says managed policies retain a maximum of five versions, requiring the Lambda function to delete the oldest non-default version before creating a new one. Exceptions also create a governance question: the design records who granted an elevated limit and, optionally, which ticket authorized it, but the source does not specify approval roles, maximum exception duration or review procedures. Future evaluation should focus on enforcement delays, identity-mapping failures, the effect of model substitutions, the fallback model’s adequacy and whether the controls produce the promised balance between cost predictability and developer access.

Related guides & quizzes

AI AgentsAI Models ExplainedFuture of AIPrompt EngineeringTest what you know — try a free AI quizLook up an AI term in our glossary
Found this useful?