{"id":21514876,"url":"https://github.com/getindata/terraform-aws-budget","last_synced_at":"2026-01-03T23:02:58.411Z","repository":{"id":137896268,"uuid":"524070239","full_name":"getindata/terraform-aws-budget","owner":"getindata","description":"Terraform module to manage AWS Budgets","archived":false,"fork":false,"pushed_at":"2023-10-20T12:36:27.000Z","size":97,"stargazers_count":2,"open_issues_count":0,"forks_count":3,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-01-24T02:30:33.068Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/getindata.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-12T11:56:46.000Z","updated_at":"2024-11-10T15:47:01.000Z","dependencies_parsed_at":"2023-10-20T13:54:11.426Z","dependency_job_id":null,"html_url":"https://github.com/getindata/terraform-aws-budget","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":"getindata/terraform-module-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getindata%2Fterraform-aws-budget","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getindata%2Fterraform-aws-budget/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getindata%2Fterraform-aws-budget/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getindata%2Fterraform-aws-budget/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/getindata","download_url":"https://codeload.github.com/getindata/terraform-aws-budget/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244066191,"owners_count":20392407,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-23T23:53:25.693Z","updated_at":"2026-01-03T23:02:53.381Z","avatar_url":"https://github.com/getindata.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Terraform AWS Budget\n\n![AWS](https://img.shields.io/badge/AWS-%23FF9900.svg?style=for-the-badge\u0026logo=amazon-aws\u0026logoColor=white)\n![Terraform](https://img.shields.io/badge/terraform-%235835CC.svg?style=for-the-badge\u0026logo=terraform\u0026logoColor=white)\n\n\u003c!--- Replace repository name --\u003e\n![License](https://badgen.net/github/license/getindata/terraform-aws-budget/)\n![Release](https://badgen.net/github/release/getindata/terraform-aws-budget/)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg height=\"150\" src=\"https://getindata.com/img/logo.svg\"\u003e\n  \u003ch3 align=\"center\"\u003eWe help companies turn their data into assets\u003c/h3\u003e\n\u003c/p\u003e\n\n---\n\nThis terraform module creates and manages multiple AWS budgets for single AWS Account.\n\nIt makes use of submodules, placed in `./modules` directory, to create the resources.\n\n## USAGE\n\n```terraform\nmodule \"aws_budgets\" {\n  source  = \"github.com/getindata/terraform-aws-budget\"\n  context = module.this.context\n\n  budgets = {\n    default = {\n      limit_amount = 100\n    }\n  }\n\n  default_notifications = {\n    default-actual-100 = {\n      comparison_operator = \"GREATER_THAN\"\n      threshold = 100\n      threshold_type = \"PERCENTAGE\"\n      notification_type = \"ACTUAL\"\n      subscriber_email_addresses = []\n    }\n  }\n\n  default_email_addresses = [\"aws@example.com\"]\n```\n\n## NOTES\n\nThis module uses a specific `budgets` object for configurations - below paragraph describes it in detail:\n\n```terraform\n    ```\n    {\n      BUDGET-NAME = {\n        # Optional\n        budget_type # - Whether this budget tracks monetary cost or usage. Availiable options: 'COST', 'USAGE', 'SAVINGS_PLANS_UTILIZATION', 'RI_UTILIZATION'.\"\n        time_period_start # - The start of the time period covered by the budget. If you don't specify a start date, AWS defaults to the start of your chosen time period. The start date must come before the end date. Format: 2017-01-01_12:00\n        time_period_end # - The end of the time period covered by the budget. There are no restrictions on the end date. Format: 2017-01-01_12:00\n        name # - Budget name (if omitted, map key, BUDGET-NAME will be used)\n        time_unit # -The length of time until a budget resets the actual and forecasted spend. Valid values: MONTHLY, QUARTERLY, ANNUALLY, and DAILY\n        extra_email_addresses # - List containing email addresses that will receive all notifications\n        cost filters # - A list of CostFilter name/values pair to apply to budget\n        [\n          {\n            name  string # - A list of CostFilter name/values pair to apply to budget\n            value = list(string) # - Refer to AWS CostFilter documentation for further detail.\n          }\n        ]\n        notifications # - A map of objects containing Budget Notifications \n        {\n          NOTIFICATION-NAME = {\n            comparison_operator # - Comparison operator to use to evaluate the condition. Can be LESS_THAN, EQUAL_TO or GREATER_THAN.\n            threshold # - Threshold when the notification should be sent.\n            threshold_type # - What kind of threshold is defined. Can be PERCENTAGE OR ABSOLUTE_VALUE.\n            notification_type # - What kind of budget value to notify on. Can be ACTUAL or FORECASTED.\n            subscriber_email_addresses # - E-Mail addresses to notify.\n          },\n        }\n        extra_notifications # - A map of objects containing Additional Budget Notifications (will be combined with var.default_notifications)\n        {\n          ADDITIONAL-NOTIFICATION-NAME = {\n            comparison_operator # - Comparison operator to use to evaluate the condition. Can be LESS_THAN, EQUAL_TO or GREATER_THAN.\n            threshold # - Threshold when the notification should be sent.\n            threshold_type # - What kind of threshold is defined. Can be PERCENTAGE OR ABSOLUTE_VALUE.\n            notification_type # - What kind of budget value to notify on. Can be ACTUAL or FORECASTED.\n            subscriber_email_addresses # - E-Mail addresses to notify.\n          },\n        }\n        cost_types # - A map containing CostTypes The types of cost included in a budget, such as tax and subscriptions.\n        {\n          include_credit # - A boolean value whether to include credits in the cost budget. Defaults to true\n          include_discount # - Specifies whether a budget includes discounts. Defaults to true\n          include_other_subscription # - A boolean value whether to include other subscription costs in the cost budget. Defaults to true\n          include_recurring # - A boolean value whether to include recurring costs in the cost budget. Defaults to true\n          include_refund # - A boolean value whether to include refunds in the cost budget. Defaults to true\n          include_subscription # - A boolean value whether to include subscriptions in the cost budget. Defaults to true\n          include_support # - A boolean value whether to include support costs in the cost budget. Defaults to true\n          include_tax # - A boolean value whether to include tax in the cost budget. Defaults to true\n          include_upfront # - A boolean value whether to include upfront costs in the cost budget. Defaults to true\n          use_amortized # - Specifies whether a budget uses the amortized rate. Defaults to false\n          use_blended # - A boolean value whether to use blended costs in the cost budget. Defaults to false\n        }\n\n        # Required\n        limit_amount # - The amount of cost or usage being measured for a budget\n      }\n    }\n    ```\n```\n\n\u003c!-- BEGIN_TF_DOCS --\u003e\n## EXAMPLES\n```hcl\nmodule \"aws_budgets\" {\n  source  = \"../../\"\n  context = module.this.context\n\n  budgets = {\n    custom-notifications = {\n      budget_type       = \"COST\"\n      limit_amount      = 1000\n      time_period_start = \"2017-01-01_12:00\"\n      time_period_end   = \"2017-02-01_12:00\"\n      time_unit         = \"MONTHLY\"\n\n      cost_filters = [\n        {\n          name  = \"AZ\"\n          value = [\"eu-central-1b\"]\n        },\n      ]\n\n      cost_types = {\n        include_tax = false\n      }\n\n      notifications = {\n        test = {\n          comparison_operator        = \"GREATER_THAN\"\n          notification_type          = \"ACTUAL\"\n          subscriber_email_addresses = [\"test@example.com\"]\n          threshold                  = 80\n          threshold_type             = \"PERCENTAGE\"\n        },\n      }\n    },\n\n    extra-notifications = {\n      budget_type  = \"COST\"\n      limit_amount = 100\n      time_unit    = \"DAILY\"\n\n      extra_notifications = {\n        extra = {\n          comparison_operator        = \"GREATER_THAN\"\n          notification_type          = \"ACTUAL\"\n          subscriber_email_addresses = [\"test@example.com\"]\n          threshold                  = 50\n          threshold_type             = \"PERCENTAGE\"\n        },\n      }\n    },\n\n    default-notifications = {\n      budget_type           = \"COST\"\n      limit_amount          = 1000\n      time_period_start     = \"2017-01-01_12:00\"\n      time_period_end       = \"2017-02-01_12:00\"\n      time_unit             = \"MONTHLY\"\n      extra_email_addresses = [\"product_owner@example.com\"]\n\n      cost_filters = [\n        {\n          name  = \"AZ\"\n          value = [\"eu-central-1b\"]\n        },\n      ]\n    },\n\n    minimal-example = {\n      limit_amount = 1000\n    }\n  }\n\n  default_notifications = {\n    default-forcast-100 = {\n      comparison_operator : \"GREATER_THAN\"\n      threshold : 100\n      threshold_type : \"PERCENTAGE\"\n      notification_type : \"FORECASTED\"\n      subscriber_email_addresses : []\n    },\n    default-actual-80 = {\n      comparison_operator : \"GREATER_THAN\"\n      threshold : 80\n      threshold_type : \"PERCENTAGE\"\n      notification_type : \"ACTUAL\"\n      subscriber_email_addresses : []\n    },\n    default-actual-100 = {\n      comparison_operator : \"GREATER_THAN\"\n      threshold : 100\n      threshold_type : \"PERCENTAGE\"\n      notification_type : \"ACTUAL\"\n      subscriber_email_addresses : []\n    }\n  }\n\n  default_email_addresses = [\"aws@example.com\"]\n}\n```\n\n\n\n\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_additional_tag_map\"\u003e\u003c/a\u003e [additional\\_tag\\_map](#input\\_additional\\_tag\\_map) | Additional key-value pairs to add to each map in `tags_as_list_of_maps`. Not added to `tags` or `id`.\u003cbr\u003eThis is for some rare cases where resources want additional configuration of tags\u003cbr\u003eand therefore take a list of maps with tag key, value, and additional configuration. | `map(string)` | `{}` | no |\n| \u003ca name=\"input_attributes\"\u003e\u003c/a\u003e [attributes](#input\\_attributes) | ID element. Additional attributes (e.g. `workers` or `cluster`) to add to `id`,\u003cbr\u003ein the order they appear in the list. New attributes are appended to the\u003cbr\u003eend of the list. The elements of the list are joined by the `delimiter`\u003cbr\u003eand treated as a single ID element. | `list(string)` | `[]` | no |\n| \u003ca name=\"input_budgets\"\u003e\u003c/a\u003e [budgets](#input\\_budgets) | A map of 'aws-budget' configuration objects:\u003cpre\u003e{\u003cbr\u003e      BUDGET-NAME = {\u003cbr\u003e        # Optional\u003cbr\u003e        budget_type # - Whether this budget tracks monetary cost or usage. Availiable options: 'COST', 'USAGE', 'SAVINGS_PLANS_UTILIZATION', 'RI_UTILIZATION'.\"\u003cbr\u003e        time_period_start # - The start of the time period covered by the budget. If you don't specify a start date, AWS defaults to the start of your chosen time period. The start date must come before the end date. Format: 2017-01-01_12:00\u003cbr\u003e        time_period_end # - The end of the time period covered by the budget. There are no restrictions on the end date. Format: 2017-01-01_12:00\u003cbr\u003e        name # - Budget name (if omitted, map key, BUDGET-NAME will be used)\u003cbr\u003e        time_unit # -The length of time until a budget resets the actual and forecasted spend. Valid values: MONTHLY, QUARTERLY, ANNUALLY, and DAILY\u003cbr\u003e        extra_email_addresses # - List containing email addresses that will receive all notifications\u003cbr\u003e        cost filters # - A list of CostFilter name/values pair to apply to budget\u003cbr\u003e        [\u003cbr\u003e          {\u003cbr\u003e            name  string # - A list of CostFilter name/values pair to apply to budget\u003cbr\u003e            value = list(string) # - Refer to AWS CostFilter documentation for further detail.\u003cbr\u003e          }\u003cbr\u003e        ]\u003cbr\u003e        notifications # - A map of objects containing Budget Notifications \u003cbr\u003e        {\u003cbr\u003e          NOTIFICATION-NAME = {\u003cbr\u003e            comparison_operator # - Comparison operator to use to evaluate the condition. Can be LESS_THAN, EQUAL_TO or GREATER_THAN.\u003cbr\u003e            threshold # - Threshold when the notification should be sent.\u003cbr\u003e            threshold_type # - What kind of threshold is defined. Can be PERCENTAGE OR ABSOLUTE_VALUE.\u003cbr\u003e            notification_type # - What kind of budget value to notify on. Can be ACTUAL or FORECASTED.\u003cbr\u003e            subscriber_email_addresses # - E-Mail addresses to notify.\u003cbr\u003e          },\u003cbr\u003e        }\u003cbr\u003e        extra_notifications # - A map of objects containing Additional Budget Notifications (will be combined with var.default_notifications)\u003cbr\u003e        {\u003cbr\u003e          ADDITIONAL-NOTIFICATION-NAME = {\u003cbr\u003e            comparison_operator # - Comparison operator to use to evaluate the condition. Can be LESS_THAN, EQUAL_TO or GREATER_THAN.\u003cbr\u003e            threshold # - Threshold when the notification should be sent.\u003cbr\u003e            threshold_type # - What kind of threshold is defined. Can be PERCENTAGE OR ABSOLUTE_VALUE.\u003cbr\u003e            notification_type # - What kind of budget value to notify on. Can be ACTUAL or FORECASTED.\u003cbr\u003e            subscriber_email_addresses # - E-Mail addresses to notify.\u003cbr\u003e          },\u003cbr\u003e        }\u003cbr\u003e        cost_types # - A map containing CostTypes The types of cost included in a budget, such as tax and subscriptions.\u003cbr\u003e        {\u003cbr\u003e          include_credit # - A boolean value whether to include credits in the cost budget. Defaults to true\u003cbr\u003e          include_discount # - Specifies whether a budget includes discounts. Defaults to true\u003cbr\u003e          include_other_subscription # - A boolean value whether to include other subscription costs in the cost budget. Defaults to true\u003cbr\u003e          include_recurring # - A boolean value whether to include recurring costs in the cost budget. Defaults to true\u003cbr\u003e          include_refund # - A boolean value whether to include refunds in the cost budget. Defaults to true\u003cbr\u003e          include_subscription # - A boolean value whether to include subscriptions in the cost budget. Defaults to true\u003cbr\u003e          include_support # - A boolean value whether to include support costs in the cost budget. Defaults to true\u003cbr\u003e          include_tax # - A boolean value whether to include tax in the cost budget. Defaults to true\u003cbr\u003e          include_upfront # - A boolean value whether to include upfront costs in the cost budget. Defaults to true\u003cbr\u003e          use_amortized # - Specifies whether a budget uses the amortized rate. Defaults to false\u003cbr\u003e          use_blended # - A boolean value whether to use blended costs in the cost budget. Defaults to false\u003cbr\u003e        }\u003cbr\u003e\u003cbr\u003e        # Required\u003cbr\u003e        limit_amount # - The amount of cost or usage being measured for a budget\u003cbr\u003e      }\u003cbr\u003e    }\u003c/pre\u003eExample with fully configurable notifications (not using var.default\\_notifications):\u003cpre\u003eterraform\u003cbr\u003e    {\u003cbr\u003e      test-budget = {\u003cbr\u003e        budget_type           = \"COST\"\u003cbr\u003e        limit_amount          = 1000\u003cbr\u003e        time_period_start     = \"2017-01-01_12:00\"\u003cbr\u003e        time_period_end       = \"2017-02-01_12:00\"\u003cbr\u003e        time_unit             = \"MONTHLY\"\u003cbr\u003e        extra_email_addresses = [\"product_owner@example.com\"]\u003cbr\u003e\u003cbr\u003e        cost_filters = [\u003cbr\u003e          {\u003cbr\u003e            name = \"AZ\"\u003cbr\u003e            value = \"eu-central-1b\"\u003cbr\u003e          },\u003cbr\u003e        ]\u003cbr\u003e\u003cbr\u003e        notifications = {\u003cbr\u003e          test = {\u003cbr\u003e            comparison_operator        = \"GREATER_THAN\"\u003cbr\u003e            notification_type          = \"ACTUAL\"\u003cbr\u003e            subscriber_email_addresses = [\"test@example.com\"]\u003cbr\u003e            threshold                  = 80\u003cbr\u003e            threshold_type             = \"PERCENTAGE\"\u003cbr\u003e          },\u003cbr\u003e        }\u003cbr\u003e      },\u003cbr\u003e    }\u003c/pre\u003eExample additional notifications:\u003cpre\u003eterraform\u003cbr\u003e    {\u003cbr\u003e      test-budget = {\u003cbr\u003e        budget_type           = \"COST\"\u003cbr\u003e        limit_amount          = 1000\u003cbr\u003e        time_period_start     = \"2017-01-01_12:00\"\u003cbr\u003e        time_period_end       = \"2017-02-01_12:00\"\u003cbr\u003e        time_unit             = \"MONTHLY\"\u003cbr\u003e        extra_email_addresses = [\"product_owner@example.com\"]\u003cbr\u003e\u003cbr\u003e        cost_filters = [\u003cbr\u003e          {\u003cbr\u003e            name = \"AZ\"\u003cbr\u003e            value = \"eu-central-1b\"\u003cbr\u003e          },\u003cbr\u003e        ]\u003cbr\u003e\u003cbr\u003e        extra_notifications = {\u003cbr\u003e          extra = {\u003cbr\u003e            comparison_operator        = \"GREATER_THAN\"\u003cbr\u003e            notification_type          = \"ACTUAL\"\u003cbr\u003e            subscriber_email_addresses = [\"test-extra@example.com\"]\u003cbr\u003e            threshold                  = 80\u003cbr\u003e            threshold_type             = \"PERCENTAGE\"\u003cbr\u003e          },\u003cbr\u003e        }\u003cbr\u003e      },\u003cbr\u003e    }\u003c/pre\u003eExample with only default notifications:\u003cpre\u003eterraform\u003cbr\u003e    {\u003cbr\u003e      test-budget = {\u003cbr\u003e        budget_type           = \"COST\"\u003cbr\u003e        limit_amount          = 1000\u003cbr\u003e        time_period_start     = \"2017-01-01_12:00\"\u003cbr\u003e        time_period_end       = \"2017-02-01_12:00\"\u003cbr\u003e        time_unit             = \"MONTHLY\"\u003cbr\u003e        extra_email_addresses = [\"product_owner@example.com\"]\u003cbr\u003e\u003cbr\u003e        cost_filters = [\u003cbr\u003e          {\u003cbr\u003e            name = \"AZ\"\u003cbr\u003e            value = \"eu-central-1b\"\u003cbr\u003e          },\u003cbr\u003e        ]\u003cbr\u003e      },\u003cbr\u003e    }\u003c/pre\u003e | `any` | n/a | yes |\n| \u003ca name=\"input_context\"\u003e\u003c/a\u003e [context](#input\\_context) | Single object for setting entire context at once.\u003cbr\u003eSee description of individual variables for details.\u003cbr\u003eLeave string and numeric variables as `null` to use default value.\u003cbr\u003eIndividual variable settings (non-null) override settings in context object,\u003cbr\u003eexcept for attributes, tags, and additional\\_tag\\_map, which are merged. | `any` | \u003cpre\u003e{\u003cbr\u003e  \"additional_tag_map\": {},\u003cbr\u003e  \"attributes\": [],\u003cbr\u003e  \"delimiter\": null,\u003cbr\u003e  \"descriptor_formats\": {},\u003cbr\u003e  \"enabled\": true,\u003cbr\u003e  \"environment\": null,\u003cbr\u003e  \"id_length_limit\": null,\u003cbr\u003e  \"label_key_case\": null,\u003cbr\u003e  \"label_order\": [],\u003cbr\u003e  \"label_value_case\": null,\u003cbr\u003e  \"labels_as_tags\": [\u003cbr\u003e    \"unset\"\u003cbr\u003e  ],\u003cbr\u003e  \"name\": null,\u003cbr\u003e  \"namespace\": null,\u003cbr\u003e  \"regex_replace_chars\": null,\u003cbr\u003e  \"stage\": null,\u003cbr\u003e  \"tags\": {},\u003cbr\u003e  \"tenant\": null\u003cbr\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_default_email_addresses\"\u003e\u003c/a\u003e [default\\_email\\_addresses](#input\\_default\\_email\\_addresses) | A list of default e-mail addresses that will receive all notifications | `list(string)` | `[]` | no |\n| \u003ca name=\"input_default_notifications\"\u003e\u003c/a\u003e [default\\_notifications](#input\\_default\\_notifications) | Configuration of default notifications\u003cbr\u003e    map(object({\u003cbr\u003e      comparison\\_operator        = string\u003cbr\u003e      threshold                  = number\u003cbr\u003e      threshold\\_type             = string\u003cbr\u003e      notification\\_type          = string\u003cbr\u003e      subscriber\\_email\\_addresses = list(string)\u003cbr\u003e    })) | \u003cpre\u003emap(object({\u003cbr\u003e    comparison_operator        = string\u003cbr\u003e    threshold                  = number\u003cbr\u003e    threshold_type             = string\u003cbr\u003e    notification_type          = string\u003cbr\u003e    subscriber_email_addresses = list(string)\u003cbr\u003e  }))\u003c/pre\u003e | `{}` | no |\n| \u003ca name=\"input_delimiter\"\u003e\u003c/a\u003e [delimiter](#input\\_delimiter) | Delimiter to be used between ID elements.\u003cbr\u003eDefaults to `-` (hyphen). Set to `\"\"` to use no delimiter at all. | `string` | `null` | no |\n| \u003ca name=\"input_descriptor_formats\"\u003e\u003c/a\u003e [descriptor\\_formats](#input\\_descriptor\\_formats) | Describe additional descriptors to be output in the `descriptors` output map.\u003cbr\u003eMap of maps. Keys are names of descriptors. Values are maps of the form\u003cbr\u003e`{\u003cbr\u003e   format = string\u003cbr\u003e   labels = list(string)\u003cbr\u003e}`\u003cbr\u003e(Type is `any` so the map values can later be enhanced to provide additional options.)\u003cbr\u003e`format` is a Terraform format string to be passed to the `format()` function.\u003cbr\u003e`labels` is a list of labels, in order, to pass to `format()` function.\u003cbr\u003eLabel values will be normalized before being passed to `format()` so they will be\u003cbr\u003eidentical to how they appear in `id`.\u003cbr\u003eDefault is `{}` (`descriptors` output will be empty). | `any` | `{}` | no |\n| \u003ca name=\"input_enabled\"\u003e\u003c/a\u003e [enabled](#input\\_enabled) | Set to false to prevent the module from creating any resources | `bool` | `null` | no |\n| \u003ca name=\"input_environment\"\u003e\u003c/a\u003e [environment](#input\\_environment) | ID element. Usually used for region e.g. 'uw2', 'us-west-2', OR role 'prod', 'staging', 'dev', 'UAT' | `string` | `null` | no |\n| \u003ca name=\"input_id_length_limit\"\u003e\u003c/a\u003e [id\\_length\\_limit](#input\\_id\\_length\\_limit) | Limit `id` to this many characters (minimum 6).\u003cbr\u003eSet to `0` for unlimited length.\u003cbr\u003eSet to `null` for keep the existing setting, which defaults to `0`.\u003cbr\u003eDoes not affect `id_full`. | `number` | `null` | no |\n| \u003ca name=\"input_label_key_case\"\u003e\u003c/a\u003e [label\\_key\\_case](#input\\_label\\_key\\_case) | Controls the letter case of the `tags` keys (label names) for tags generated by this module.\u003cbr\u003eDoes not affect keys of tags passed in via the `tags` input.\u003cbr\u003ePossible values: `lower`, `title`, `upper`.\u003cbr\u003eDefault value: `title`. | `string` | `null` | no |\n| \u003ca name=\"input_label_order\"\u003e\u003c/a\u003e [label\\_order](#input\\_label\\_order) | The order in which the labels (ID elements) appear in the `id`.\u003cbr\u003eDefaults to [\"namespace\", \"environment\", \"stage\", \"name\", \"attributes\"].\u003cbr\u003eYou can omit any of the 6 labels (\"tenant\" is the 6th), but at least one must be present. | `list(string)` | `null` | no |\n| \u003ca name=\"input_label_value_case\"\u003e\u003c/a\u003e [label\\_value\\_case](#input\\_label\\_value\\_case) | Controls the letter case of ID elements (labels) as included in `id`,\u003cbr\u003eset as tag values, and output by this module individually.\u003cbr\u003eDoes not affect values of tags passed in via the `tags` input.\u003cbr\u003ePossible values: `lower`, `title`, `upper` and `none` (no transformation).\u003cbr\u003eSet this to `title` and set `delimiter` to `\"\"` to yield Pascal Case IDs.\u003cbr\u003eDefault value: `lower`. | `string` | `null` | no |\n| \u003ca name=\"input_labels_as_tags\"\u003e\u003c/a\u003e [labels\\_as\\_tags](#input\\_labels\\_as\\_tags) | Set of labels (ID elements) to include as tags in the `tags` output.\u003cbr\u003eDefault is to include all labels.\u003cbr\u003eTags with empty values will not be included in the `tags` output.\u003cbr\u003eSet to `[]` to suppress all generated tags.\u003cbr\u003e**Notes:**\u003cbr\u003e  The value of the `name` tag, if included, will be the `id`, not the `name`.\u003cbr\u003e  Unlike other `null-label` inputs, the initial setting of `labels_as_tags` cannot be\u003cbr\u003e  changed in later chained modules. Attempts to change it will be silently ignored. | `set(string)` | \u003cpre\u003e[\u003cbr\u003e  \"default\"\u003cbr\u003e]\u003c/pre\u003e | no |\n| \u003ca name=\"input_name\"\u003e\u003c/a\u003e [name](#input\\_name) | ID element. Usually the component or solution name, e.g. 'app' or 'jenkins'.\u003cbr\u003eThis is the only ID element not also included as a `tag`.\u003cbr\u003eThe \"name\" tag is set to the full `id` string. There is no tag with the value of the `name` input. | `string` | `null` | no |\n| \u003ca name=\"input_namespace\"\u003e\u003c/a\u003e [namespace](#input\\_namespace) | ID element. Usually an abbreviation of your organization name, e.g. 'eg' or 'cp', to help ensure generated IDs are globally unique | `string` | `null` | no |\n| \u003ca name=\"input_regex_replace_chars\"\u003e\u003c/a\u003e [regex\\_replace\\_chars](#input\\_regex\\_replace\\_chars) | Terraform regular expression (regex) string.\u003cbr\u003eCharacters matching the regex will be removed from the ID elements.\u003cbr\u003eIf not set, `\"/[^a-zA-Z0-9-]/\"` is used to remove all characters other than hyphens, letters and digits. | `string` | `null` | no |\n| \u003ca name=\"input_stage\"\u003e\u003c/a\u003e [stage](#input\\_stage) | ID element. Usually used to indicate role, e.g. 'prod', 'staging', 'source', 'build', 'test', 'deploy', 'release' | `string` | `null` | no |\n| \u003ca name=\"input_tags\"\u003e\u003c/a\u003e [tags](#input\\_tags) | Additional tags (e.g. `{'BusinessUnit': 'XYZ'}`).\u003cbr\u003eNeither the tag keys nor the tag values will be modified by this module. | `map(string)` | `{}` | no |\n| \u003ca name=\"input_tenant\"\u003e\u003c/a\u003e [tenant](#input\\_tenant) | ID element \\_(Rarely used, not included by default)\\_. A customer identifier, indicating who this instance of a resource is for | `string` | `null` | no |\n\n## Modules\n\n| Name | Source | Version |\n|------|--------|---------|\n| \u003ca name=\"module_aws_budget\"\u003e\u003c/a\u003e [aws\\_budget](#module\\_aws\\_budget) | ./modules/budget | n/a |\n| \u003ca name=\"module_this\"\u003e\u003c/a\u003e [this](#module\\_this) | cloudposse/label/null | 0.25.0 |\n\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_budgets\"\u003e\u003c/a\u003e [budgets](#output\\_budgets) | Map of budgets configuration |\n\n## Providers\n\nNo providers.\n\n## Requirements\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"requirement_terraform\"\u003e\u003c/a\u003e [terraform](#requirement\\_terraform) | \u003e= 1.3.0 |\n\n## Resources\n\nNo resources.\n\u003c!-- END_TF_DOCS --\u003e\n\n## CONTRIBUTING\n\nContributions are very welcomed!\n\nStart by reviewing [contribution guide](CONTRIBUTING.md) and our [code of conduct](CODE_OF_CONDUCT.md). After that, start coding and ship your changes by creating a new PR.\n\n## LICENSE\n\nApache 2 Licensed. See [LICENSE](LICENSE) for full details.\n\n## AUTHORS\n\n\u003c!--- Replace repository name --\u003e\n\u003ca href=\"https://github.com/getindata/terraform-aws-budget/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=getindata/terraform-aws-budget\" /\u003e\n\u003c/a\u003e\n\nMade with [contrib.rocks](https://contrib.rocks).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetindata%2Fterraform-aws-budget","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgetindata%2Fterraform-aws-budget","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetindata%2Fterraform-aws-budget/lists"}