Rule catalog
Every Operational Rule, for engineers choosing which one to apply. Each card opens the rule's page: what it changes, before-and-after HCL, how to enable it, and its known limits. Rules are applied during terraform init, with no forks and no wrapper modules.
Adds prevent_destroy = true to data-bearing resources. Blocks accidental deletion of S3 buckets, RDS instances, Aurora clusters, DynamoDB tables, EFS file systems, and ElastiCache replication groups.
Adds ignore_changes for tags and tags_all on every AWS resource that takes tags. Prevents Terraform from reverting tags managed by AWS Config, Service Catalog, or external automation.
Adds ignore_changes for the tag keys your organization names, and nothing else. Silences a scanner's or inventory agent's tag while every other tag stays managed.
Adds ignore_changes for read_capacity and write_capacity on DynamoDB tables. Prevents Terraform from reverting autoscaler adjustments on every plan.
Adds ignore_changes for the ami and image_id attributes on EC2 instances and launch templates. Prevents Terraform from forcing instance replacement when an AMI lookup resolves to a newer image.
Adds prevent_destroy = true to encryption key resources. Protects KMS keys and Secrets Manager secrets from accidental deletion.
Removes all provisioner blocks from all resources. Provisioners bypass the declarative model and introduce hidden side effects.
Adds a validation block to the module's region variable, so a region outside your organization's allowlist is rejected before anything is created.
Reports GPU and specialty EC2 instance types (p3, p4, x1, x2, u-*) written into a module as literals. The module is delivered unchanged and nothing is blocked.
Adds create_before_destroy = true to security groups and ACM certificates. The replacement exists before the old resource is destroyed, so an attached interface or listener keeps working.
Adds ignore_changes for the artifact pointer a pipeline rewrites: the Lambda zip, hash or image, and the ECS task definition revision. Terraform stops rolling deployments back.
Adds ignore_changes for the capacity an autoscaler owns: desired_capacity on Auto Scaling groups, desired_size on EKS node groups, desired_count on ECS services. terraform-aws-eks and the terraform-aws-ecs service module already ignore these.
Opt-in. Lets Terraform change a terraform-aws-eks managed node group's desired, min and max size after create, with the AWS CLI from terraform_data. Needs the AWS CLI where terraform apply runs.
Adds ignore_changes for password on RDS instances and master_password on Aurora clusters. A credential that rotates outside Terraform stops showing as a diff on every plan.
Sets the provider's deletion-protection attribute on RDS instances, Aurora clusters, DynamoDB tables and load balancers. AWS refuses the deletion, from Terraform, the console or the API.
Adds a validation to the module's lifecycle_rule variable requiring an enabled rule that aborts incomplete multipart uploads within a bounded number of days. Rejected on your side before anything is created.
Related
- Add your first rule - apply one rule to one module and check it worked
- Rules overview - how rules are applied during
terraform init, alongside compliance controls - Rulesets in the console - how org admins group rules into a Baseline and rulesets selected with
?ruleset= - Rule definitions - the HCL of every rule, with its parameters and shipped defaults