Skip to content

Account Budgets

Set monthlyBudget on a workload account, and accountBudgets creates an AWS Budget filtered to that account. Optionally roll up budgets per CostCenter.

Lives in the management account.

Per-account budgets

new DataLandingZone(app, {
organization: {
ous: {
workloads: {
ouId: 'ou-xxxx',
accounts: [
{ accountId: '111...', name: 'analytics-dev', type: DlzAccountType.DEVELOP,
costCenter: 'analytics', domain: 'curated', monthlyBudget: 500 },
{ accountId: '222...', name: 'analytics-prod', type: DlzAccountType.PRODUCTION,
costCenter: 'analytics', domain: 'serving', monthlyBudget: 5000 },
],
},
},
},
finOps: {
accountBudgets: {
defaultSubscribers: {
snsTopicName: 'finops-alerts',
emails: ['[email protected]'],
},
},
},
});

Produces:

  • dlz-account-analytics-dev — $500 budget filtered to 111...
  • dlz-account-analytics-prod — $5,000 budget filtered to 222...

Budgets alert at 80% actual and 100% forecasted (the underlying DlzBudget defaults).

Per-cost-center roll-ups

Set perCostCenterRollup: true to also create one budget per unique CostCenter value:

finOps: {
accountBudgets: {
defaultSubscribers: { /* ... */ },
perCostCenterRollup: true,
},
}

With the two accounts above this also produces:

  • dlz-costcenter-analytics — $5,500 budget filtered to CostCenter = analytics

The CostCenter cost-allocation tag must be active. finOps.dataExports activates it automatically; without dataExports, activate it once in the Billing console.

Sharing SNS topics with anomaly detection

Use the same snsTopicName across accountBudgets, costAnomalyDetection, and budgets — DLZ deduplicates and reuses one topic + subscription set.