You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+37Lines changed: 37 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -23,14 +23,28 @@ This module is compatible with both Terraform (>=1.4) and OpenTofu (>=1.4).
23
23
- Monitor **BurstBalance**, **ReadOps**, and **WriteOps** per EBS volume.
24
24
- Dynamically set alarm thresholds per volume type (gp2, gp3, io1, io2, st1, sc1).
25
25
- Automatically exclude irrelevant alarms (e.g., no BurstBalance on st1/sc1).
26
+
- Creates a Cost Category in AWS Cost Explorer to group and track all EBS-related costs.
26
27
- Filter volumes by tags (e.g., `Environment = Production`).
27
28
- Send alerts to SNS with configurable email subscription.
29
+
- Adds CloudWatch Composite Alarms to combine ReadOps, WriteOps, and BurstBalance alerts per EBS volume.
30
+
-**Optional CloudWatch dashboard** with dynamic widgets per volume.
28
31
- Includes example project and CI workflow with security checks.
29
32
30
33
---
31
34
32
35
## Usage
33
36
37
+
### Least Privilege IAM Policy
38
+
39
+
Before applying this module, ensure the IAM user or role has at least the permissions defined in [`iam-policy-minimal.json`](./iam-policy-minimal.json).
This module automatically applies consistent tags to all resources (SNS topics, CloudWatch alarms, dashboards) it creates, making it easier to track costs, ownership, and environments.
|`Environment`| Taken from `var.tag_filter_value`. Ensures the monitoring resources are labeled consistently with the EBS volumes they are watching (e.g., `Production`). |
119
+
|`CostCenter`| Taken from `var.cost_center`. Allows cost allocation and reporting by project, team, or budget owner (default: `FinOps`). |
120
+
|`ManagedBy`| Fixed tag (`terraform-aws-ebs-optimization`). Indicates the resources are managed by this Terraform module, improving transparency and auditability. |
121
+
122
+
**Important:**
123
+
- The `Environment` tag does not dynamically read the EBS volume’s tags.
124
+
- It uses the value you pass as `tag_filter_value` in the module inputs.
125
+
- For example, if you filter volumes with `tag_filter_value = "Production"`, the same value is applied as the `Environment` tag on the monitoring resources.
0 commit comments