examhub .cc The most efficient path to the most valuable certifications.
In this note ≈ 35 min

Cost Optimization and Visibility in Multi-Account Environments

6,820 words · ≈ 35 min read

Cost visibility and multi-account billing is where AWS Solutions Architect Professionals earn their keep. On SAP-C02, Domain 4 (Continuous Improvement for Existing Solutions, 29% weight) and Domain 2 (Design for New Solutions, 29% weight) repeatedly ask how to make spend visible, attributable, and enforceable across dozens or hundreds of accounts inside a single AWS Organization — without breaking account autonomy. Cost visibility multi-account design is therefore not a single service but a layered architecture: consolidated billing at the foundation, tag policies and cost allocation tags for attribution, Cost Categories for grouping, AWS Cost and Usage Report plus Amazon Athena for custom analytics, AWS Billing Conductor for proforma chargeback, AWS Cost Anomaly Detection for ML alerts, and organization-wide AWS Budgets for enforcement. This guide walks through each layer at SAP-C02 Pro depth with realistic scenarios like a parent company that must chargeback IT costs to twenty subsidiaries, plain-English analogies, traps, and FAQs.

What is Cost Visibility in a Multi-Account AWS Organization?

Cost visibility multi-account is the capability to answer five questions across every AWS account you own, in one place, continuously: who is spending, on what service, for which project, against which budget, and is that spend normal. In a single AWS account this is trivial — AWS Cost Explorer and a handful of tags give you everything. In a multi-account AWS Organization with thirty to three hundred member accounts, the same question becomes a distributed system problem: you need centralised billing data, standardised tagging, consistent groupings, shared commitments, delegated analytics, and enforcement that works across every member account without giving the central FinOps team admin rights inside each one.

The SAP-C02 exam tests whether you can design this end-to-end. Cost visibility multi-account on SAP-C02 is not "which tool exists" (that is CLF-C02 territory) — it is "given this organisation shape, which combination of tools, policies, and account roles makes cost visibility and chargeback work at scale."

Why Cost Visibility Multi-Account Matters on SAP-C02

Community data from recent SAP-C02 takers shows cost visibility multi-account scenarios appear repeatedly in Domain 4 (optimise existing workloads) and Domain 2 (design new multi-account landing zones). The highest-frequency traps for cost visibility multi-account are: activating cost allocation tags in the wrong account, forgetting that Reserved Instance and Savings Plans sharing is on by default and how to selectively disable it, confusing AWS Billing Conductor with AWS Cost Categories for chargeback, and missing that tag policies alone do not enforce tags — they validate compliance, not block creation.

Core termCost visibility multi-account on AWS is the architectural pattern of using AWS Organizations consolidated billing, tag policies, cost allocation tags, Cost Categories, AWS Cost and Usage Report, AWS Billing Conductor, AWS Cost Anomaly Detection, and organization-wide AWS Budgets together so that every dollar of spend across every member account can be traced to an owner, grouped for reporting, attributed to a commitment, and governed by a budget — from a single payer (management) account.

Plain-Language Explanation: Cost Visibility Multi-Account

Cost visibility multi-account sounds intimidating because it stitches seven services together. Three analogies make the whole architecture click.

Analogy 1 — The Family Phone Plan with Sub-Accounts

AWS Organizations consolidated billing is a family mobile phone plan. Every family member (member account) has their own line, does their own calling, but the monthly bill lands on one family member — the payer. The carrier offers volume discounts that apply across the whole plan: if dad buys a 3-year prepaid data bundle (a Reserved Instance or Savings Plan), mum's data usage can consume that bundle too, because the plan pools entitlements. If dad wants to stop sharing with his teenage son who keeps burning the data (one specific member account), he can toggle that line's sharing off at the carrier's portal (the payer's billing preferences). Cost Allocation Tags are the stickers the family puts on each phone ("school", "work", "gaming") so when the bill comes, they can split the charges by purpose. AWS Cost Categories are the household budget buckets above those stickers: "kids", "adults", "shared utilities". AWS Billing Conductor is what happens when dad decides to re-sell phone plans to his cousins at a small markup and print them custom invoices — the carrier still charges dad the real amount, but the cousins each see a prettier, marked-up, branded bill.

Analogy 2 — The Office Building Electric Meter

Imagine a twenty-floor office building. Consolidated billing is the main electric meter at the basement that receives the real utility bill. Each tenant floor has a sub-meter — those are the member accounts with their own usage. Cost Allocation Tags are the labels on each appliance per floor ("conference room", "server closet", "kitchen"). Tag policies are the building's tenancy rules printed in the lease: "every appliance on every floor must carry a Cost Center label from this approved list." The rules say what is acceptable, but the building management still has to send an inspector to enforce — in AWS that enforcement is Service Control Policies combined with IAM condition keys, not tag policies alone. AWS Cost Categories are how building management groups floors into business units on the monthly report ("Floors 1–5 = Retail division"). AWS Cost and Usage Report is the raw per-appliance per-hour meter log that gets shipped out on a USB stick for the accountants. AWS Billing Conductor is the building owner re-billing each tenant at the tenant's negotiated rate — the utility still charges the wholesale rate to the owner. AWS Cost Anomaly Detection is the smart meter vendor's ML that pings the owner when Floor 12 suddenly burns triple its normal electricity on a quiet Sunday.

Analogy 3 — The Postal System with Registered Senders

Consolidated billing is the national post office routing every piece of mail (every AWS invoice line) to one PO box — the payer account. Each member account is a registered sender. Tag policies are the postal code format rules — your address must match a validated pattern, and tag policies report which senders are non-compliant, but they do not stop you from dropping an unlabelled parcel in the box (unless combined with SCP enforcement at the gate). Cost allocation tags are the labels stuck on every parcel that tell the sorting machine where to route charges. AWS Cost Categories are the higher-level postal districts that group multiple postcodes. AWS Cost and Usage Report is the manifest of every single parcel handled today, delivered as a CSV to your warehouse (Amazon S3). AWS Billing Conductor is a licensed courier reseller that re-prices the postage on each parcel before invoicing the end customer, while the post office still charges the courier the wholesale rate.

Hold these three mental models — family phone plan, office electric meter, postal system — and every SAP-C02 cost visibility multi-account question turns into a design exercise rather than a memory exercise.

The Cost Visibility Multi-Account Reference Architecture

Every serious cost visibility multi-account design on AWS layers seven capabilities on top of AWS Organizations. Picture it as a stack.

Layer 0 — AWS Organizations with All Features Enabled

Nothing else works without this. You must enable all features (not just consolidated billing) in AWS Organizations to unlock tag policies, Service Control Policies (SCPs), delegated administration, and commitment sharing controls. Every cost visibility multi-account pattern assumes this baseline.

Layer 1 — Consolidated Billing and Commitment Sharing

This is where the payer (management) account becomes the single source of truth for invoicing, volume-tier discounts compound, and Reserved Instance plus Savings Plans commitments apply across member accounts.

Layer 2 — Tag Policies and Cost Allocation Tag Activation

Tag policies live in AWS Organizations and define the schema. Activation of each user-defined tag as a cost allocation dimension must happen in the payer account's Billing preferences. Cost visibility multi-account depends on this combination.

Layer 3 — Cost Categories

Rule-based groupings that survive tag inconsistency and re-org. Defined centrally, visible in Cost Explorer, Budgets, and the Cost and Usage Report.

Layer 4 — AWS Cost and Usage Report + S3 + Athena

Raw hourly line items delivered to Amazon S3, partitioned and queried with Amazon Athena, surfaced through Amazon QuickSight or any BI tool for cost visibility multi-account dashboards that the built-in console cannot produce.

Layer 5 — AWS Billing Conductor

Proforma billing groups, custom pricing rules, custom line items, and chargeback-style invoices when the organisation needs to re-price AWS cost for downstream units or external customers.

Layer 6 — AWS Cost Anomaly Detection and Organization-Wide Budgets

Continuous ML anomaly monitoring and threshold-based AWS Budgets at the organization level close the loop from visibility to alert to governance.

AWS Organizations Consolidated Billing — The Foundation

AWS Organizations consolidated billing merges every member account's usage into one invoice, paid by the payer (management) account. Member accounts keep their autonomy: they own their resources, IAM, VPCs, logs. What changes is that their billing line items flow up to the payer.

Three Financial Superpowers of Consolidated Billing

  1. One invoice per organisation — one PDF, one ACH, one set of tax documents. The payer account sees line items grouped by member account.
  2. Tiered volume discounts aggregate — usage-tiered pricing (Amazon S3 storage tiers, Amazon EC2 data transfer tiers, AWS Lambda tiers) compounds on combined organisation usage. A 100 TB footprint spread across fifty member accounts prices at the 100 TB tier, not fifty small tiers.
  3. RI and Savings Plans sharing — an unused portion of a Reserved Instance or Compute Savings Plan purchased in any account (including the payer) can cover matching usage in any other account in the organisation by default.

Consolidated Billing Is Free

There is no extra charge for AWS Organizations or consolidated billing. You are billed for the underlying resource usage only.

Commitment sharing is on by default — and selectively disable-able — Reserved Instance and Savings Plans discount sharing across an AWS Organization is on by default for every member account. The payer account can turn sharing off per member account (or for the entire organisation) from Billing preferences. Turning sharing off for a noisy-neighbour subsidiary is a classic SAP-C02 scenario answer when the question is "How do I prevent Account X from consuming commitments bought centrally?" — the answer is not SCP, not IAM, but the RI/SP sharing toggle in the payer's billing preferences.

Commitment Sharing Mechanics You Must Know

  • Zonal Reserved Instances (EC2 RIs tied to a specific Availability Zone) apply first to the purchasing account, then to any matching usage in the organisation if sharing is on.
  • Regional Reserved Instances apply across AZs in the region and across accounts when sharing is on.
  • Compute Savings Plans are the most flexible: any account in the organisation can consume them against matching EC2, Fargate, and Lambda usage.
  • EC2 Instance Savings Plans are constrained to a specific region and instance family but still share across the org.
  • Sharing is not the same as purchasing authority — you can disable sharing without changing who owns the commitment.

Consolidated Billing Limits

  • Default limit of 10 member accounts, raised via AWS Support to thousands.
  • One payer per organisation; the payer cannot itself be a member of another organisation.
  • Credits, free tier, and support plan pricing apply at the payer account level — every member inherits the payer's support plan tier.

Tag Policies and Cost Allocation Tags — Who Spent What

Tags are the attribution primitive, but in a multi-account context you must separate three distinct responsibilities: defining the tag schema (tag policies), applying tags to resources (SCPs plus IAM plus automation), and activating tags as cost dimensions (payer billing preferences).

Step 1 — Define the Tag Schema in Tag Policies

Tag policies are a type of AWS Organizations policy that validates which tag keys and values are allowed on resources across the organisation. A tag policy might say: the tag key CostCenter must exist, must be capitalised exactly CostCenter (not costcenter), and its value must come from the approved list {CC-100, CC-200, CC-300, ...}. Tag policies attach to the root, an OU, or specific accounts.

Step 2 — Understand What Tag Policies Actually Do (and Do Not)

Tag policies validate compliance — they report, per resource, whether tags match the schema — but they do not by themselves prevent a non-compliant tag from being created. Enforcement requires either enabling "prevent non-compliant operations for this tag" in the tag policy for supported resource types (a subset of services), or combining tag policies with SCPs and IAM condition keys like aws:RequestTag/CostCenter and aws:TagKeys that deny resource creation without the required tag.

Tag policies alone do not block untagged resources — A common SAP-C02 distractor says "apply a tag policy in AWS Organizations to force every EC2 instance to carry a CostCenter tag." By itself, a tag policy only reports non-compliance. To block creation of an untagged EC2 instance you need either the tag policy's opt-in enforcement flag for that resource type or an SCP using aws:RequestTag condition keys. The correct answer for "enforce tagging" is usually tag policies plus SCPs plus CI/CD-time checks — not one of them alone.

Step 3 — Activate Cost Allocation Tags in the Payer Account

Activating tags for cost allocation happens only in the payer (management) account's Billing preferences. Member accounts cannot activate tags for cost allocation even if they created the resources — activation is an organization-wide decision. There are two kinds:

  • User-defined tags — everything you create (CostCenter, Project, Environment). Activate each one. Up to 500 active user-defined cost allocation tags per payer.
  • AWS-generated tagsaws:createdBy, aws:cloudformation:stack-name, etc. Useful for default attribution when user tagging is inconsistent. Activate them in the same place.

After activation, the tag dimension appears in AWS Cost Explorer, AWS Budgets, AWS Cost Categories, and the AWS Cost and Usage Report within about 24 hours. Historical data before activation is not backfilled — tags only attribute cost from activation forward.

Cost allocation tag activation happens only in the payer account — Even though member accounts create resources and apply tags, only the payer (management) account's Billing preferences can activate a tag as a cost allocation dimension. A classic SAP-C02 scenario: "A member account created a tag but it does not appear in Cost Explorer." The fix is not IAM, not SCP — it is the payer account activating the tag in the Billing console. Delegate billing administration via AWS Organizations delegated administrator for the Billing service if a separate FinOps account needs this capability.

The Right Way to Roll Out Tag Governance at Scale

  1. Publish the tag schema as a tag policy attached to the organisation root.
  2. Enable the tag policy's "prevent non-compliant operations" for every supported resource type.
  3. Attach an SCP that denies RunInstances, CreateBucket, CreateFunction, etc. when aws:RequestTag/CostCenter is missing or not in the approved list.
  4. Fail CI/CD pipelines on cfn-lint / tflint / Checkov rules that enforce the same schema pre-deploy.
  5. Activate the tag in the payer account's Billing preferences.
  6. Monitor compliance with AWS Config rules (required-tags) and tag policy compliance reports.

AWS Cost Categories — Grouping Above Tags

AWS Cost Categories are rule-based groupings defined centrally that appear as first-class dimensions in AWS Cost Explorer, AWS Budgets, and the AWS Cost and Usage Report. Each category has a name (e.g. BusinessUnit) and a set of rules that each map to a value (e.g. Retail, Wholesale, Corporate).

Why Cost Categories Beat Tags Alone

Tags fail at scale for three reasons: they drift (typos, missing tags on legacy resources), they are per-resource (not per-account or per-service), and they do not compose (you cannot easily combine "this account plus that service plus this region" into one bucket). Cost Categories solve all three.

Cost Category Rule Dimensions

A Cost Category rule can match on:

  • Linked account ID (or list)
  • Service (e.g. Amazon EC2, AWS Lambda)
  • Region
  • Usage type
  • Charge type (usage, tax, credit, recurring fee)
  • Tag key/value
  • Another Cost Category value (nested)

Inherited Values

A special rule type lets a Cost Category inherit its value from an existing tag — so if you have a mature CostCenter tag, a category can simply inherit each value without a handwritten rule per cost center. This is the cleanest way to expose tag-driven attribution as a stable reporting dimension.

Split Charges

Cost Categories support split charges for shared costs (e.g. Reserved Instance amortisation, shared Amazon ECR) — you define a splitting rule (proportional, even, fixed) across the member values, giving chargeback reports without hand-maths.

AWS Cost Allocation Reports and the Cost and Usage Report (CUR)

AWS Cost and Usage Report (CUR) is the raw fact table of AWS billing. Every hour of every resource for every line item in the organisation lands in an Amazon S3 bucket of your choice, as compressed CSV or (better) Apache Parquet. CUR is the same data Cost Explorer reads; you are choosing to bypass the managed dashboard and run your own analytics stack.

CUR Delivery Mechanics

  • Delivered by the AWS billing system into an S3 bucket that you own in the payer account (or a delegated billing account).
  • At least once per day; hourly granularity is the default content.
  • Options: compress as GZIP or Parquet, overwrite or versioned, include resource IDs, split by billing period.
  • Integrate with AWS Glue Data Catalog by enabling "Athena integration" on the report — AWS creates the Glue table, partitions by billing period, and registers schema updates automatically.

CUR + Athena Architecture for Cost Visibility Multi-Account

The canonical cost visibility multi-account analytics stack is:

  1. Payer account configures a CUR with Athena integration, Parquet format, hourly granularity, resource IDs included.
  2. CUR writes to S3 in the payer account's region; an AWS Glue crawler (auto-managed) keeps the partitions current.
  3. A centralised analytics account (often a delegated billing admin account) uses cross-account S3 access (bucket policy grants s3:GetObject and s3:ListBucket to the analytics account IAM roles) to query via Athena.
  4. Analysts run SQL against the aws_billing_cur_* tables to generate per-BU, per-project, per-service monthly reports.
  5. Amazon QuickSight connects to Athena as a data source and publishes dashboards to finance and engineering leads.

CUR vs Legacy Cost Allocation Report

AWS originally offered a "Cost Allocation Report" — a simple monthly CSV. CUR is the successor and superset: hourly, richer columns, resource IDs, RI/SP attribution. On SAP-C02, treat CUR as the canonical answer whenever the question mentions Athena, QuickSight, Parquet, BI, hourly line items, or custom cost dashboards.

CUR + Athena is the exam answer for custom multi-account cost dashboards — When an SAP-C02 scenario says "the finance team needs a custom dashboard across all member accounts that Cost Explorer cannot produce" or "join AWS costs with internal CMDB data", the answer is almost always AWS Cost and Usage Report delivered to Amazon S3 in the payer account, queried by Amazon Athena via the Glue Data Catalog, surfaced by Amazon QuickSight — with the analytics account reading via cross-account S3 bucket policy. Cost Explorer is the wrong answer any time custom joins or custom visualisations are required.

Sample CUR Column Cheat Sheet

  • lineItem/UsageAccountId — the member account that incurred the cost.
  • lineItem/ProductCode, lineItem/UsageType, lineItem/Operation — what the spend was on.
  • lineItem/ResourceId — the ARN or ID of the specific resource (when you opt in).
  • lineItem/UnblendedCost, lineItem/BlendedCost, lineItem/NetUnblendedCost — the cost fields (blended spreads RI/SP discount across all users; unblended shows raw; net accounts for discount programmes).
  • resourceTags/user_CostCenter — any activated user-defined tag becomes a column.
  • savingsPlan/SavingsPlanARN, reservation/ReservationARN — commitment attribution columns.

AWS Billing Conductor — Proforma Billing and Chargeback

AWS Billing Conductor is the service that generates proforma (i.e. alternative) bills for groups of accounts inside your organisation, using custom pricing rules you define. AWS still charges the payer the real price; Billing Conductor produces a separate, custom-priced view per billing group for chargeback, reseller, or intra-company accounting.

The Four Building Blocks of Billing Conductor

  1. Billing groups — sets of member accounts that share a proforma bill. Each member account can belong to at most one billing group. The billing group has a primary account that receives the proforma invoice view.
  2. Pricing rules — reusable rules that modify prices. Types include global markup/markdown (e.g. +5% across all services), per-service markup/markdown, tiered pricing, and Savings Plans negation (to remove SP discount from a group that did not pay for the SP).
  3. Pricing plans — a named collection of pricing rules applied to a billing group.
  4. Custom line items — fixed or percentage-based additional charges (e.g. "monthly managed service fee $5,000", "security tooling allocation 2%") that Billing Conductor adds to the proforma bill.

Proforma vs Real Billing

  • Real bill — what AWS charges the payer. Blended/unblended costs computed from actual AWS rates minus any RI/SP discounts the whole organisation owns.
  • Proforma bill — what Billing Conductor calculates for each billing group using the configured pricing plan. Surfaces in the Billing Conductor console, a dedicated proforma Cost and Usage Report, and in AWS Cost Explorer filtered by billing group.

The difference between real and proforma is what the reseller or central IT keeps (margin) or absorbs (subsidy). Billing Conductor is specifically designed to expose this math so finance can reconcile.

When Billing Conductor Is the Right Answer

  • A parent holding company needs to chargeback IT costs to subsidiaries at custom internal rates.
  • A managed service provider resells AWS to end customers at a markup and needs branded, custom-priced invoices.
  • An internal "platform team" wants to cross-charge a flat "tooling fee" on top of infrastructure to business units.
  • Regional divisions need a per-region markup to cover local support overhead.

When Billing Conductor Is NOT the Right Answer

  • You only need to see cost grouped by business unit → use AWS Cost Categories (free, no re-pricing).
  • You only need to report who spent what → use CUR + Athena.
  • You need to enforce spend caps → AWS Budgets with Budget Actions, not Billing Conductor.
  • You need real AWS discounts — Billing Conductor does not change what AWS charges; it only reprices what you show downstream.

Billing Conductor vs Cost Categories vs CUR — pick the right tool — On SAP-C02, three chargeback-adjacent services are confused constantly. AWS Cost Categories groups existing cost with zero re-pricing — use it when finance wants a report by BU and the actual AWS price is fine. AWS Cost and Usage Report + Athena exposes raw line items for custom queries — use it when you need to build dashboards or join with external data. AWS Billing Conductor re-prices cost into a separate proforma bill per billing group — use it only when you need custom markup, markdown, or fixed line items that the downstream unit or customer will actually see and be charged against. If the scenario says "parent company charges subsidiaries at custom internal rates and issues them chargeback invoices", the answer is Billing Conductor. If it just says "finance wants to see cost by subsidiary", the answer is Cost Categories.

Cross-Account Data Flow Summary

Source Destination Purpose
Member account usage Payer account's real bill AWS invoicing
Payer's CUR Analytics account S3 BI dashboards
Billing Conductor proforma Billing group primary account Subsidiary/customer chargeback
Cost Categories definition Payer account Reporting dimension in Cost Explorer / Budgets / CUR

Reserved Instance and Savings Plans Sharing Controls

Commitment sharing is the hidden superpower of consolidated billing — and a tightly controlled one in mature cost visibility multi-account designs. Three scenarios matter for SAP-C02.

Scenario A — Shared by Default (Most Common)

A central "commitment desk" purchases Compute Savings Plans in the payer account. With sharing on, any matching EC2/Fargate/Lambda usage in any member account consumes the Savings Plan entitlement first (cheaper), then falls through to On-Demand. Finance amortises the commitment cost across consuming accounts using unblended-vs-blended cost or a Cost Category split rule.

Scenario B — Selective Disable

A subsidiary joins the organisation but must see its own undiscounted costs for tax or regulatory reasons. The payer disables commitment sharing for that member account. Now that account pays On-Demand rates even if the organisation owns idle commitments; conversely any commitment purchased by that account stays local to it.

Scenario C — Full Organisation Disable

The organisation chooses to assign commitments strictly to the purchasing account (rare, typically for legal-entity isolation). Every account's usage is matched only against commitments it owns. You lose the flexibility but gain clean per-entity accounting.

How to Toggle Commitment Sharing

  • In the payer account only, go to AWS Billing → Billing preferences → Receive AWS Organizations Savings Plans / Reserved Instance discount sharing.
  • Toggle per member account or for the whole org.
  • Changes take effect the next billing day and cannot be applied retroactively.

Audit commitment sharing annually with CUR — Run a yearly Athena query over CUR grouping by lineItem/UsageAccountId and savingsPlan/SavingsPlanARN / reservation/ReservationARN to see which accounts are consuming which commitments. If a subsidiary you expected to be isolated is benefiting from corporate commitments (or vice versa), that is the trigger to update the payer's sharing toggles — and often to rebate the corresponding proforma charge in AWS Billing Conductor.

AWS Cost Anomaly Detection — ML Across the Org

AWS Cost Anomaly Detection is a free, opt-in ML service inside AWS Cost Management that learns your normal spend patterns and raises an alert when daily spend deviates materially. For cost visibility multi-account, the critical design choice is the monitor type.

The Four Monitor Types

  1. AWS services — one monitor that watches every service across every account (default).
  2. Linked account — one monitor per member account or per group of accounts.
  3. Cost category — one monitor per Cost Category value (e.g. one per business unit).
  4. Cost allocation tag — one monitor per activated tag value (e.g. one per project).
  • One AWS services monitor as the safety net.
  • One linked account monitor per production member account, delivering alerts to that account's owner via SNS.
  • One Cost Category monitor per business unit, delivering to the FinOps distribution list.

Alert Subscription Mechanics

  • Alerts go to SNS topics or email, with thresholds in absolute dollars or percent of baseline.
  • Cost Anomaly Detection itself is free; SNS fan-out charges the standard rates.
  • Alerts include a root-cause breakdown: top 10 contributing usage types and linked accounts.

AWS Budgets at the Organization Level

AWS Budgets is usually introduced as a single-account tool, but on SAP-C02 you must know it is also a multi-account governance tool. From the payer account you can create budgets that scope across member accounts, Cost Categories, Cost Allocation Tags, or specific services — and act on them.

Org-Wide Budget Patterns

  • Organisation master budget — one cost budget at the org level, alerting finance if total month-to-date or forecast spend exceeds a threshold.
  • Per-BU budgets — one budget scoped to each Cost Category value, alerting the BU owner.
  • Per-member-account budgets — one per production account, alerting the account team plus the central FinOps SNS.
  • Commitment coverage budgets — RI coverage and Savings Plans coverage budgets across the organisation, alerting when coverage falls below (for example) 75%.
  • Commitment utilization budgets — alerting when utilisation of owned commitments drops below (for example) 80%, which signals over-purchase.

Budget Actions for Governance

Budget Actions is the one feature in AWS cost management that can take automated action. Configure a budget to:

  • Apply a restrictive IAM policy to users or roles (e.g. deny ec2:RunInstances and rds:CreateDBInstance) when breached.
  • Attach a restrictive SCP to a specific OU or account (e.g. deny all ec2:* writes) when breached.
  • Stop EC2 or RDS instances tagged with a matching key when breached.

Budget Actions can run in manual-approve mode (CloudWatch alarm-style) or automatic mode (applied immediately on breach).

Combine Cost Anomaly Detection with Budget Actions for layered defence — A mature cost visibility multi-account setup uses Cost Anomaly Detection for "surprises you did not plan for" (the smart meter alert), and AWS Budgets with Budget Actions for "limits you committed to in advance" (the circuit breaker). Anomaly Detection tells finance when something weird is happening; Budgets stops the bleeding when a hard policy line is crossed. Designing only one of the two leaves a visibility-without-enforcement gap that SAP-C02 loves to test.

Putting It All Together — Parent Company Charging Back IT to 20 Subsidiaries

This is the canonical SAP-C02 cost visibility multi-account scenario. Walk through it end-to-end and you will recognise every variant the exam throws at you.

Scenario

A holding company runs a central IT organisation that operates shared platform services on AWS (VPCs, networking, logging, CI/CD, security tooling) and also hosts workloads for 20 subsidiaries. Each subsidiary is its own legal entity and needs its own proforma invoice at contractually agreed internal rates. Central IT wants to (a) see spend by subsidiary, (b) issue chargeback invoices at custom rates per subsidiary, (c) enforce per-subsidiary budgets, and (d) keep the purchased Savings Plans commitments in the payer account but share across all subsidiaries except one (the newly acquired subsidiary that still bills its own cost separately for the first year).

Reference Design

Organizations layout

  • 1 payer account (management).
  • 20 subsidiary OUs, each containing 1–N member accounts owned by that subsidiary.
  • 1 Shared Services OU containing platform/logging/networking/security accounts.
  • 1 Analytics OU with a delegated billing administration account.

Consolidated billing and commitments

  • All subsidiaries under consolidated billing.
  • Compute Savings Plans purchased in the payer account.
  • RI/SP sharing on for 19 subsidiaries, off for the newly acquired subsidiary (per-account toggle in payer billing preferences).

Tag governance

  • Tag policy attached to org root requiring CostCenter, Project, Environment, Owner on every supported resource type.
  • SCP at each subsidiary OU denying RunInstances, CreateBucket, CreateFunction, etc. without aws:RequestTag/CostCenter present and in the approved value list.
  • Tag activation performed in the payer account for all four tag keys.

Cost grouping

  • A Cost Category Subsidiary with rules mapping each subsidiary OU's account IDs to a value (SubA, SubB, … SubT).
  • A Cost Category ServiceBundle grouping shared services costs (central VPC, logging, security) into PlatformShared with a split-charges rule proportional to each subsidiary's direct compute spend.

Chargeback engine

  • AWS Billing Conductor configured with one billing group per subsidiary (20 billing groups).
  • A pricing plan per billing group with a global markup (e.g. +8%) plus custom line items for fixed platform fees.
  • Proforma CUR enabled per billing group and delivered to S3 in the analytics account for subsidiary-facing reporting.

Custom analytics

  • Real CUR with Athena integration enabled in the payer, delivered Parquet hourly to payer S3.
  • Bucket policy grants the analytics account read access.
  • Glue Data Catalog + Athena workgroups per subsidiary.
  • QuickSight dashboards: "Monthly spend by subsidiary", "Savings Plans coverage by subsidiary", "Top 10 resources by cost this month" — refreshed daily.

Anomaly and governance

  • Cost Anomaly Detection monitor per subsidiary (linked-account type) plus one per Cost Category value.
  • Organization-wide master budget at 110% of plan, alerting CFO.
  • Per-subsidiary cost budget at 100% and 120%, alerting subsidiary CFO plus central FinOps.
  • Savings Plans utilization budget at 80% across the org, alerting the commitment desk.
  • One production-critical subsidiary has a Budget Action configured to apply an SCP denying ec2:RunInstances in its OU if the monthly budget reaches 150%.

Why Each Service is the Answer

  • Consolidated billing + commitment sharing → financial pooling, per-account sharing toggle handles the newly acquired subsidiary.
  • Tag policies + SCP + payer-side activation → consistent, enforced, reportable attribution.
  • Cost Categories → stable "Subsidiary" and "ServiceBundle" dimensions with split-charges for shared platform costs.
  • CUR + Athena + QuickSight → dashboards the AWS console cannot produce (hourly, custom joins, subsidiary-scoped).
  • Billing Conductor → proforma chargeback at custom rates that subsidiaries see.
  • Cost Anomaly Detection + Budgets + Budget Actions → layered alerting and enforcement.

Commit this reference design to memory and every cost visibility multi-account SAP-C02 question becomes a check against which block of this architecture is being asked about.

Side-by-Side: When to Use Which Tool

Scenario Correct tool
See total monthly cost by subsidiary on a managed dashboard AWS Cost Categories + AWS Cost Explorer
Custom BI dashboard joining cost with internal CMDB CUR + Athena + QuickSight
Custom-priced proforma invoice per subsidiary AWS Billing Conductor
Enforce cost allocation tagging across all accounts Tag policies + SCPs + payer-side tag activation
Detect unexpected cost spike per account AWS Cost Anomaly Detection (linked-account monitors)
Alert when organization spend will exceed $X AWS Budgets (cost budget, forecast threshold) at org level
Automatically stop resources when budget hit AWS Budgets + Budget Actions
Stop a specific subsidiary from consuming shared Savings Plans Payer billing preferences: disable RI/SP sharing for that account
Group shared platform costs proportionally to subsidiaries Cost Category with split-charge rule
Export raw hourly line items for audit AWS Cost and Usage Report to S3
Central FinOps account runs billing without root on payer AWS Organizations delegated administrator for Billing

Key Numbers and Must-Memorize Facts

  • AWS Organizations consolidated billing is free; RI/SP sharing is on by default and togglable per-member in the payer.
  • Tag policies report compliance; add the tag policy's "prevent non-compliant operations" flag or SCP aws:RequestTag conditions to block creation.
  • Cost allocation tags activate only in the payer account; up to 500 active user-defined tags per payer; data appears in Cost Explorer/CUR within ~24 hours.
  • AWS Cost Categories support inherited values from tags and split-charges for shared cost; values are visible in Cost Explorer, Budgets, and CUR.
  • CUR is delivered at least once per day to an S3 bucket you own, with hourly granularity, CSV or Parquet, and can auto-register an AWS Glue Data Catalog table for Athena.
  • AWS Billing Conductor creates proforma bills per billing group; each account belongs to at most one billing group; proforma does not affect what AWS actually charges the payer.
  • AWS Cost Anomaly Detection is free and supports 4 monitor types: services, linked account, Cost Category, cost allocation tag.
  • AWS Budgets offers 6 budget types plus Budget Actions that can apply IAM policy, SCP, or stop EC2/RDS; first two action-enabled budgets free, then $0.10 per action-enabled budget per day.
  • Organization-wide budgets are created from the payer account; scope can be accounts, Cost Categories, tags, services.

Common SAP-C02 Traps — Spot Them Fast

Trap 1 — Activating cost allocation tags in a member account

Member accounts cannot activate cost allocation tags. Activation is a payer-only action. SAP-C02 distractors will suggest delegating activation to the subsidiary — the correct answer is either payer-side activation or AWS Organizations delegated admin for Billing.

Trap 2 — Tag policies alone enforce tags

Tag policies validate and report by default; they only block creation for supported resource types when the "prevent non-compliant operations" flag is set. For full enforcement, combine with SCP aws:RequestTag conditions and CI/CD-time policy checks.

Trap 3 — Forgetting RI/SP sharing is on by default

"How do I make sure our new acquired subsidiary does not benefit from our central Savings Plans?" is a frequent SAP-C02 prompt. The answer is toggling sharing off for that member in the payer's billing preferences, not SCP and not IAM.

Trap 4 — Billing Conductor for reporting

Billing Conductor is for re-pricing and proforma invoicing. If the question only asks for reporting by business unit, Cost Categories is cheaper and simpler. Billing Conductor is the answer only when downstream sees custom prices.

Trap 5 — Cost Anomaly Detection vs AWS Budgets

Cost Anomaly Detection learns baselines and alerts on deviations; AWS Budgets alerts on thresholds you define. Both are needed — do not pick one when the scenario expects the other. "Unexpected spike" → Anomaly Detection. "Spend exceeds forecast $10,000" → Budgets.

Trap 6 — CUR vs Cost Explorer for custom joins

If the scenario mentions Athena, QuickSight, joining with external data, or hourly line items, the answer is CUR. Cost Explorer cannot do custom joins.

Trap 7 — Commitment sharing disabled globally by mistake

Disabling sharing organisation-wide for one noisy subsidiary's sake destroys flexibility for the other nineteen. The correct pattern is selective disable per member account, not a global toggle.

Trap 8 — Delegated administrator vs payer-only actions

Some billing actions (activating cost allocation tags, toggling RI/SP sharing) can be delegated to a non-payer FinOps account via AWS Organizations delegated administrator for Billing. Not every action can; SCP and root-of-payer actions cannot. Read the scenario to see whether delegation is in scope.

Practice Question Patterns

  1. "A parent company with 20 subsidiaries wants to charge each subsidiary for AWS usage at custom internal rates and issue them a branded invoice." → AWS Billing Conductor (billing group per subsidiary, pricing plan per subsidiary, proforma CUR).
  2. "A FinOps team wants to build a QuickSight dashboard joining AWS cost with internal CMDB data across the organisation." → CUR + S3 + Athena + QuickSight, bucket policy for cross-account read.
  3. "The newly acquired subsidiary should not benefit from Savings Plans purchased in the payer." → Disable RI/SP sharing for that member account in payer Billing preferences.
  4. "Finance wants spend grouped by business unit even though the accounts span multiple teams." → AWS Cost Categories (inherited-from-tag or rule-based).
  5. "The CTO wants an email when any member account has an unusual spend spike." → AWS Cost Anomaly Detection with linked-account monitors and SNS subscribers.
  6. "Enforce that every EC2 instance carries a CostCenter tag." → SCP with aws:RequestTag/CostCenter condition plus tag policy.
  7. "Finance wants to see proportional allocation of shared logging costs across business units." → Cost Category with split-charge rule.
  8. "Automatically stop EC2 instances when a specific OU reaches 150% of its monthly budget." → AWS Budgets with Budget Actions configured in the payer account.
  9. "Delegate billing administration to a dedicated FinOps account instead of the payer." → AWS Organizations delegated administrator for the Billing service.
  10. "Activate a user-defined tag so it appears in Cost Explorer." → Payer account Billing preferences → Cost allocation tags.

FAQ — Cost Visibility Multi-Account Top Questions

Q1: In a 50-account AWS Organization, where do I activate a cost allocation tag so it shows up in Cost Explorer and CUR?

Tag activation for cost allocation is a payer (management) account action performed in AWS Billing → Billing preferences → Cost allocation tags. Neither member accounts nor OU-level delegations can activate tags by themselves. If you do not want to share the payer root credentials with your FinOps team, use AWS Organizations delegated administrator for the Billing service to delegate billing administration (including tag activation) to a dedicated analytics or FinOps account. Activation takes effect within ~24 hours and is forward-looking — historical line items before activation are not re-tagged.

Q2: We bought a $1M Compute Savings Plan in the payer. How do I stop one specific subsidiary from silently benefiting?

Go to the payer account → AWS Billing → Billing preferences → Receive AWS Organizations Savings Plans and Reserved Instance discount sharing. Toggle sharing off for that specific member account. The change takes effect on the next billing cycle; matching usage in that account will thereafter be billed at On-Demand (unless that account owns its own Savings Plans or Reserved Instances). The rest of the organisation continues to share the central commitment. This is a per-member toggle — do not disable sharing at the organisation level just for one noisy subsidiary, or you will lose flexibility everywhere. SCPs and IAM policies cannot achieve this, because commitment sharing is a billing-layer setting, not a permission.

Q3: When do I use AWS Billing Conductor instead of AWS Cost Categories?

Use AWS Cost Categories when you only need to report on cost grouped by business unit, project, or environment — Cost Categories is free, zero-configuration at the usage layer, and its values appear in Cost Explorer, Budgets, and CUR. Use AWS Billing Conductor when you need to re-price cost for downstream accounting — for example a parent company that charges subsidiaries at a markup, a managed service provider reselling AWS to external customers, or an internal platform team bundling a fixed fee onto infrastructure. Billing Conductor produces a separate proforma view that the downstream entity sees; AWS still charges the payer the real rate. If the scenario mentions "custom pricing", "markup", "chargeback invoice", or "proforma", the answer is Billing Conductor; if it only mentions "see spend by BU", the answer is Cost Categories.

Q4: We want a dashboard Cost Explorer cannot produce — joining AWS cost with our internal CMDB and customer data. What is the right architecture?

Configure the AWS Cost and Usage Report (CUR) in the payer account, Parquet format, hourly granularity, resource IDs included, with AWS Glue Data Catalog / Athena integration enabled. Deliver the CUR to an Amazon S3 bucket in the payer (or delegated billing) account. Grant cross-account read via bucket policy to the analytics account's IAM roles. Run Amazon Athena queries that join CUR tables to your CMDB and customer tables (which can live in the same or another S3 data lake). Surface results with Amazon QuickSight or your BI tool of choice. This bypasses the limits of Cost Explorer's managed dashboard while still using AWS-native, pay-per-query pricing with no servers. Pair with Cost Categories and cost allocation tags to keep your query SQL simple and stable.

Q5: How do we enforce that every resource across the whole organisation carries CostCenter and Project tags?

Enforcement is a three-layer pattern. First, define the schema with an AWS Organizations tag policy attached to the org root, specifying the required keys, capitalisation, and allowed values. Second, enable the tag policy's "prevent non-compliant operations for this tag" flag for every supported resource type, and attach an SCP at each OU that denies resource-creation API calls (ec2:RunInstances, s3:CreateBucket, lambda:CreateFunction, etc.) when aws:RequestTag/CostCenter or aws:RequestTag/Project is missing or not in the allowed list. Third, run pre-deploy checks in CI/CD (cfn-lint, tflint, Checkov) on the same schema so non-compliant infrastructure is caught before it ever reaches AWS. Layer four for cleanup: use AWS Config rules (required-tags) to flag any legacy resources that slipped through. Tag policies alone are necessary but not sufficient; SCPs are the real gate.

Q6: What is the minimum set of services I need for cost visibility in a new 10-account AWS Organization?

At minimum, on day one, enable these in the payer account: (1) AWS Organizations with all features enabled and consolidated billing active; (2) AWS Cost Explorer enabled in Billing preferences; (3) an AWS Cost and Usage Report delivered to an Amazon S3 bucket in the payer with Athena integration enabled (you will be grateful for historical data even if you do not build dashboards immediately); (4) three or four cost allocation tags activated (CostCenter, Project, Environment, Owner) plus a tag policy attached at the root; (5) AWS Cost Anomaly Detection with at least one AWS services monitor and one linked-account monitor per production account; (6) one organisation-wide cost budget at 110% of forecast with SNS alerts. Add Cost Categories, Billing Conductor, and Budget Actions as the organisation grows and chargeback requirements mature. This minimum set gives you attribution, historical raw data, baseline alerting, and forecast-based governance at zero or near-zero incremental cost.

Q7: Can we delegate cost management administration to a FinOps account so that FinOps can act without having the payer root credentials?

Yes. Use AWS Organizations delegated administrator for the Billing service. From the payer (management) account, register a chosen member account (typically a dedicated FinOps or analytics account) as a delegated administrator for billing.amazonaws.com. The delegated admin account can then manage cost allocation tags, create and manage AWS Budgets at the organisation level, read the AWS Cost and Usage Report, create and manage Cost Categories, and operate AWS Cost Anomaly Detection across the whole organisation — without ever needing payer root credentials. Some actions remain payer-only (notably RI/SP sharing toggles and payment method updates), so delegate the common daily operations and keep the payer locked down for exceptional changes. This pattern matches the SAP-C02 preference for least-privilege, separation-of-duties designs.

Further Reading

  • Multi-Account Governance — AWS Organizations structure, OU design, delegated administration, and the governance stack that sits alongside cost visibility.
  • Organizations SCP Design — SCP patterns that enforce cost allocation tags at resource creation.
  • Landing Zone & AWS Control Tower — the opinionated landing zone that pre-wires consolidated billing, tag policies, and CUR in a mature multi-account setup.
  • Savings Plans & RI Strategy — commitment purchasing strategy, coverage targets, and utilisation targets that feed into cost visibility multi-account dashboards.

Nail cost visibility multi-account at this depth and you have covered roughly one-quarter of the billing and optimisation surface area on SAP-C02 — plus built the FinOps backbone every real-world AWS Organization eventually needs.

Official sources