Skip to content

Budget

The Budget resource lets you manage AWS Budgets for tracking your AWS spending and usage. You can set thresholds and get notified when your costs or usage exceed your budgeted amounts.

Minimal Example

Create a basic budget with notifications for when your costs exceed a specified limit.

ts
import AWS from "alchemy/aws/control";

const budget = await AWS.Budgets.Budget("monthlyBudget", {
  Budget: {
    BudgetName: "Monthly Cost Budget",
    BudgetLimit: {
      Amount: 1000,
      Unit: "USD"
    },
    TimeUnit: "MONTHLY",
    BudgetType: "COST"
  },
  NotificationsWithSubscribers: [
    {
      Notification: {
        NotificationType: "ACTUAL",
        ComparisonOperator: "GREATER_THAN",
        Threshold: 90
      },
      Subscribers: [
        {
          SubscriptionType: "EMAIL",
          Address: "notify@example.com"
        }
      ]
    }
  ],
  ResourceTags: [
    {
      Key: "Environment",
      Value: "Production"
    }
  ]
});

Advanced Configuration

Configure a budget with both cost and usage notifications along with resource tags for better management.

ts
const advancedBudget = await AWS.Budgets.Budget("advancedBudget", {
  Budget: {
    BudgetName: "Advanced Budget",
    BudgetLimit: {
      Amount: 500,
      Unit: "USD"
    },
    TimeUnit: "MONTHLY",
    BudgetType: "COST"
  },
  NotificationsWithSubscribers: [
    {
      Notification: {
        NotificationType: "FORECASTED",
        ComparisonOperator: "GREATER_THAN",
        Threshold: 80
      },
      Subscribers: [
        {
          SubscriptionType: "SNS",
          Address: "arn:aws:sns:us-east-1:123456789012:BudgetAlerts"
        }
      ]
    },
    {
      Notification: {
        NotificationType: "ACTUAL",
        ComparisonOperator: "GREATER_THAN",
        Threshold: 100
      },
      Subscribers: [
        {
          SubscriptionType: "EMAIL",
          Address: "alerts@example.com"
        }
      ]
    }
  ],
  ResourceTags: [
    {
      Key: "Project",
      Value: "NewApp"
    }
  ]
});

Different Budget Types

Create a usage budget to track resource consumption.

ts
const usageBudget = await AWS.Budgets.Budget("usageBudget", {
  Budget: {
    BudgetName: "Usage Budget",
    BudgetLimit: {
      Amount: 1000,
      Unit: "GB"
    },
    TimeUnit: "MONTHLY",
    BudgetType: "USAGE"
  },
  NotificationsWithSubscribers: [
    {
      Notification: {
        NotificationType: "ACTUAL",
        ComparisonOperator: "GREATER_THAN",
        Threshold: 75
      },
      Subscribers: [
        {
          SubscriptionType: "EMAIL",
          Address: "usage-alerts@example.com"
        }
      ]
    }
  ]
});

Tagging for Cost Allocation

Set up a budget with specific resource tags to help track spending across different projects.

ts
const projectBudget = await AWS.Budgets.Budget("projectBudget", {
  Budget: {
    BudgetName: "Project A Budget",
    BudgetLimit: {
      Amount: 1500,
      Unit: "USD"
    },
    TimeUnit: "MONTHLY",
    BudgetType: "COST"
  },
  ResourceTags: [
    {
      Key: "Project",
      Value: "ProjectA"
    }
  ],
  NotificationsWithSubscribers: [
    {
      Notification: {
        NotificationType: "ACTUAL",
        ComparisonOperator: "GREATER_THAN",
        Threshold: 60
      },
      Subscribers: [
        {
          SubscriptionType: "EMAIL",
          Address: "project-a-alerts@example.com"
        }
      ]
    }
  ]
});