An open API service indexing awesome lists of open source software.

https://github.com/geekcell/terraform-aws-budgets

Terraform module to provision an AWS Budgets.
https://github.com/geekcell/terraform-aws-budgets

aws budgets terraform terraform-module

Last synced: 7 months ago
JSON representation

Terraform module to provision an AWS Budgets.

Awesome Lists containing this project

README

          

[![Geek Cell GmbH](https://raw.githubusercontent.com/geekcell/.github/main/geekcell-github-banner.png)](https://www.geekcell.io/)

### Code Quality
[![License](https://img.shields.io/github/license/geekcell/terraform-aws-budgets)](https://github.com/geekcell/terraform-aws-budgets/blob/master/LICENSE)
[![GitHub release (latest tag)](https://img.shields.io/github/v/release/geekcell/terraform-aws-budgets?logo=github&sort=semver)](https://github.com/geekcell/terraform-aws-budgets/releases)
[![Release](https://github.com/geekcell/terraform-aws-budgets/actions/workflows/release.yaml/badge.svg)](https://github.com/geekcell/terraform-aws-budgets/actions/workflows/release.yaml)
[![Validate](https://github.com/geekcell/terraform-aws-budgets/actions/workflows/validate.yaml/badge.svg)](https://github.com/geekcell/terraform-aws-budgets/actions/workflows/validate.yaml)
[![Lint](https://github.com/geekcell/terraform-aws-budgets/actions/workflows/linter.yaml/badge.svg)](https://github.com/geekcell/terraform-aws-budgets/actions/workflows/linter.yaml)

# Terraform AWS Budgets

This Terraform module provides a preconfigured solution for setting up
AWS Budgets for your AWS account. Our team has years of experience working
with AWS Budgets, and we are sharing our knowledge with you through this
module. With this module, you can quickly and easily set up budgets that
align with your organization's goals and get alerts when your usage exceeds
your specified limits. By using this module, you can save time and avoid
common mistakes when setting up AWS Budgets.

Not only is this module easy to configure, but it also encapsulates
everything you need in one place. You can simply use the module and be
confident that everything has been set up correctly and efficiently.

This makes it an excellent choice for organizations of any size looking
to effectively manage their AWS costs.

## Inputs

| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
| [budgets](#input\_budgets) | The list of budget. |

list(object({
name = string
budget_type = string
limit_amount = string
limit_unit = string
time_period_start = string
time_period_end = string
time_unit = string

cost_filter = optional(map(list(string)))

notification = object({
comparison_operator = string
threshold = string
threshold_type = string
notification_type = string
})
}))
|
[
{
"budget_type": "COST",
"limit_amount": "200",
"limit_unit": "USD",
"name": "budget-account-monthly",
"notification": {
"comparison_operator": "GREATER_THAN",
"notification_type": "FORECASTED",
"threshold": "100",
"threshold_type": "PERCENTAGE"
},
"time_period_end": "2087-06-15_00:00",
"time_period_start": "2023-01-01_00:00",
"time_unit": "MONTHLY"
}
]
| no |
| [name](#input\_name) | The name of the budget. | `string` | n/a | yes |
| [recipients](#input\_recipients) | The email addresses to send notifications to. | `list(string)` | n/a | yes |

## Outputs

No outputs.

## Providers

| Name | Version |
|------|---------|
| [aws](#provider\_aws) | >= 4.4 |

## Resources

- resource.aws_budgets_budget.main (main.tf#19)
- data source.aws_caller_identity.current (data.tf#1)

# Examples
### Basic Example
```hcl
module "basic-example" {
source = "../../"
name = var.name

recipients = var.recipients

budgets = [
{
name = var.name

budget_type = "COST"
limit_amount = var.amount
limit_unit = var.amount_unit

time_period_start = "2023-01-01_00:00"
time_period_end = "2087-06-15_00:00"
time_unit = "MONTHLY"

notification = {
comparison_operator = "GREATER_THAN"
threshold = "80"
threshold_type = "PERCENTAGE"
notification_type = "FORECASTED"
}
}
]
}
```

### Advanced Example
```hcl
module "advanced-example" {
source = "../../"
name = "my-budget"

budgets = [
{
name = "ec2-rds-monthly-in-eu-central-1"
budget_type = "COST"
limit_amount = "200"
limit_unit = "USD"
time_period_start = "2023-01-01_00:00"
time_period_end = "2087-06-15_00:00"
time_unit = "MONTHLY"

cost_filter = {
"Service" = [
"Amazon Elastic Compute Cloud - Compute",
"Amazon Relational Database Service"
]
"Region" = [
"eu-central-1"
]
}

notification = {
comparison_operator = "GREATER_THAN"
threshold = "80"
threshold_type = "PERCENTAGE"
notification_type = "FORECASTED"
}
}
]

recipients = ["no-reply@example.org"]
}
```