Rule ID Reference

July 21, 2026 ยท View on GitHub

Source of truth: rule files in packages/rules/src/aws/.

ID Convention

Format: CLDBRN-{PROVIDER}-{SERVICE}-{N}

  • All uppercase
  • No zero-padding on the sequence number
  • IDs stay contiguous within each provider/service sequence; when a change affects the sequence, renumber later entries and update references in the same change
  • Provider: AWS, AZURE, GCP
  • Service: short name matching the directory (e.g. EBS, EC2, RDS, S3, LAMBDA)

The metadata test in packages/rules/test/rule-metadata.test.ts currently enforces uniqueness and a gap-free numeric sequence for every provider/service pair.

Compatibility Status

Rule IDs are public configuration and result references. The repository currently enforces contiguous service sequences, including renumbering later entries when rules are removed or reordered. That policy conflicts with treating each ID as an immutable cross-release identifier. The long-term public-stability contract remains a maintainer decision.

Until that decision is resolved, follow the enforced contiguous policy, treat any renumbering as a user-visible migration, and update all repository references together. Do not renumber IDs as part of unrelated maintenance.

Rule Table

IDDescriptionServiceSupports
CLDBRN-AWS-APIGATEWAY-1Flags REST API stages when cacheClusterEnabled is not explicitly true.apigatewaydiscovery, iac
CLDBRN-AWS-CLOUDFRONT-1Reviews only distributions using PriceClass_All.cloudfrontdiscovery, iac
CLDBRN-AWS-CLOUDFRONT-2Requires a complete 30-day Requests history and flags only distributions whose total request count stays below 100.cloudfrontdiscovery
CLDBRN-AWS-CLOUDTRAIL-1Flag redundant multi-region CloudTrail trails when more than one trail covers the same account.cloudtraildiscovery
CLDBRN-AWS-CLOUDTRAIL-2Flag redundant single-region CloudTrail trails when more than one trail covers the same region.cloudtraildiscovery
CLDBRN-AWS-CLOUDWATCH-1Flag CloudWatch log groups that do not define retention and are not delivery-managed.cloudwatchdiscovery, iac
CLDBRN-AWS-CLOUDWATCH-2Flags log groups whose most recent observed stream activity is missing or older than 90 days. Delivery-managed log groups remain exempt.cloudwatchdiscovery
CLDBRN-AWS-CLOUDWATCH-3Reviews only log groups storing at least 1 GiB and flags them when no metric filters are configured.cloudwatchdiscovery
CLDBRN-AWS-COSTGUARDRAILS-1Flags accounts whose AWS Budgets summary reports zero configured budgets.costguardrailsdiscovery
CLDBRN-AWS-COSTGUARDRAILS-2Flags accounts whose Cost Anomaly Detection summary reports zero anomaly monitors.costguardrailsdiscovery
CLDBRN-AWS-COSTGUARDRAILS-3Flags configured AWS Budgets only when normalized actual spend is strictly greater than the same-unit budget limit. Malformed and unit-mismatched spend details are skipped.costguardrailsdiscovery
CLDBRN-AWS-COSTEXPLORER-1Compares the last two full months and flags only services with an existing prior-month baseline and a cost increase greater than 10 cost units.costexplorerdiscovery
CLDBRN-AWS-DYNAMODB-1Flags only tables whose parsed latestStreamLabel is older than 90 days. Tables without a stream label are skipped.dynamodbdiscovery
CLDBRN-AWS-DYNAMODB-2Reviews only provisioned-capacity tables and flags them when no table-level read or write autoscaling targets are configured.dynamodbdiscovery, iac
CLDBRN-AWS-DYNAMODB-3Reviews only provisioned-capacity tables and flags them when 30 days of consumed read and write capacity both sum to zero.dynamodbdiscovery
CLDBRN-AWS-DYNAMODB-4Reviews only provisioned-capacity tables and flags them when statically resolved read or write autoscaling ranges have identical min and max capacity values.dynamodbiac
CLDBRN-AWS-EC2-1Flag direct EC2 instances that do not use curated preferred instance types.ec2iac, discovery
CLDBRN-AWS-EC2-2Flag S3 interface endpoints when a gateway endpoint is the cheaper in-VPC option.ec2iac
CLDBRN-AWS-EC2-3Flag Elastic IP allocations that are not associated with an EC2 resource.ec2discovery, iac
CLDBRN-AWS-EC2-4Flag interface VPC endpoints that have processed no traffic in the last 30 days.ec2discovery
CLDBRN-AWS-EC2-5Flag EC2 instances whose CPU and network usage stay below the low-utilization threshold for at least 4 of the previous 14 days.ec2discovery
CLDBRN-AWS-EC2-6Flags only families with a curated Graviton-equivalent path. Instances without architecture metadata or outside the curated family set are skipped.ec2discovery, iac
CLDBRN-AWS-EC2-7Reviews only active reserved instances with an endTime inside the next 60 days.ec2discovery
CLDBRN-AWS-EC2-8Treats 2xlarge and above, plus metal, as the large-instance review threshold.ec2discovery, iac
CLDBRN-AWS-EC2-9Flags only instances with a parsed launch timestamp at least 180 days old.ec2discovery
CLDBRN-AWS-EC2-10Flags IaC-defined instances only when detailed monitoring is explicitly enabled.ec2iac
CLDBRN-AWS-EC2-11Flags only NAT gateways in the available state and requires complete 7-day BytesInFromDestination and BytesOutToDestination coverage, with both totals equal to 0.ec2discovery
CLDBRN-AWS-EC2-12Flags only EC2 reserved instances whose endTime fell within the last 30 days, surfacing them for renewal follow-up review.ec2discovery
CLDBRN-AWS-EC2-13Flags only EC2 instances whose discovered state is stopped and whose parsed stop timestamp is at least 30 days old. Instances with missing or unparseable stop timestamps are skipped.ec2discovery
CLDBRN-AWS-ECS-1Flags only EC2-backed container instances whose instance families have a curated Graviton-equivalent path. Fargate and unclassified backing instances are skipped.ecsdiscovery
CLDBRN-AWS-ECS-2Flags only ECS clusters with a complete 14-day AWS/ECS CPU history and an average below 10%.ecsdiscovery
CLDBRN-AWS-ECS-3Flags only active REPLICA ECS services and requires both a scalable target and at least one scaling policy.ecsdiscovery, iac
CLDBRN-AWS-EBS-1Flags previous-generation EBS volume types (gp2, io1, and standard) and does not flag current-generation HDD families such as st1 or sc1.ebsdiscovery, iac
CLDBRN-AWS-EBS-2Flag EBS volumes that are not attached to any EC2 instance.ebsdiscovery
CLDBRN-AWS-EBS-3Flag EBS volumes whose attached EC2 instances are all in the stopped state.ebsdiscovery
CLDBRN-AWS-EBS-4Treats volumes above 100 GiB as oversized enough to warrant explicit review.ebsdiscovery, iac
CLDBRN-AWS-EBS-5Flags only io1 and io2 volumes whose provisioned IOPS exceed 32000.ebsdiscovery, iac
CLDBRN-AWS-EBS-6Flags only io1 and io2 volumes at 16000 IOPS or below, using an IOPS-only gp3 eligibility heuristic without throughput checks.ebsdiscovery, iac
CLDBRN-AWS-EBS-7Flags only completed snapshots with a parsed StartTime older than 90 days.ebsdiscovery
CLDBRN-AWS-EBS-8Flags only gp3 volumes whose provisioned throughput is above the included 125 MiB/s baseline.ebsiac
CLDBRN-AWS-EBS-9Flags only gp3 volumes whose provisioned or defaulted IOPS exceed the included 3000 baseline.ebsiac
CLDBRN-AWS-ECR-1Flag ECR repositories that do not define a lifecycle policy.ecriac, discovery
CLDBRN-AWS-ECR-2Reviews only repositories with a lifecycle policy and flags them when the statically parsed policy does not expire untagged images.ecriac
CLDBRN-AWS-ECR-3Reviews only repositories with a lifecycle policy and flags them when the statically parsed policy does not cap tagged image retention.ecriac
CLDBRN-AWS-EKS-1Flags only managed node groups with classifiable non-Arm instance families. Arm AMIs and unclassified node groups are skipped.eksdiscovery, iac
CLDBRN-AWS-ELASTICACHE-1Reviews only available clusters with a parsed create time at least 180 days old and requires active reserved-node capacity on the same node type, preferring exact engine matches when ElastiCache reports them.elasticachediscovery
CLDBRN-AWS-ELASTICACHE-2Currently supports Redis and Valkey clusters, requires a complete 14-day metric history, and flags only available clusters whose computed hit rate stays below 5% while average current connections stay below 2.elasticachediscovery
CLDBRN-AWS-ELB-1Flags load balancers with no attached target groups or no registered targets across attached target groups.elbdiscovery
CLDBRN-AWS-ELB-2Flag Classic Load Balancers that have zero attached instances.elbdiscovery
CLDBRN-AWS-ELB-3Flags load balancers with no attached target groups or no registered targets across attached target groups.elbdiscovery
CLDBRN-AWS-ELB-4Flags load balancers with no attached target groups or no registered targets across attached target groups.elbdiscovery
CLDBRN-AWS-ELB-5Requires a complete 14-day RequestCount history, treats fewer than 10 requests per day as idle, and skips load balancers already covered by the stricter empty-target cleanup rules.elbdiscovery
CLDBRN-AWS-EMR-1Reuses the built-in EC2 family policy. EMR clusters are flagged when any discovered cluster instance type falls into the current non-preferred, previous-generation family set.emrdiscovery, iac
CLDBRN-AWS-EMR-2Flags only active clusters whose IsIdle metric stays true for six consecutive 5-minute periods, which is a 30-minute idle window.emrdiscovery
CLDBRN-AWS-RDS-1Flag RDS DB instances that do not use curated preferred instance classes.rdsiac, discovery
CLDBRN-AWS-RDS-2Flag RDS DB instances that have no database connections in the last 7 days.rdsdiscovery
CLDBRN-AWS-RDS-3Reviews only available DB instances with a parsed create time at least 180 days old and requires active reserved-instance coverage on the same instance class, deployment mode, and normalized engine when AWS reports it.rdsdiscovery
CLDBRN-AWS-RDS-4Flags only curated non-Graviton RDS families with a clear Graviton migration path. Existing Graviton classes and unclassified families are skipped.rdsdiscovery, iac
CLDBRN-AWS-RDS-5Reviews only available DB instances and treats a complete 30-day average CPUUtilization of 10% or lower as low utilization.rdsdiscovery
CLDBRN-AWS-RDS-6Flags only RDS MySQL 5.7.x and PostgreSQL 11.x DB instances for extended-support review.rdsdiscovery, iac
CLDBRN-AWS-RDS-7Flags only snapshots whose source DB instance no longer exists and whose parsed create time is at least 30 days old.rdsdiscovery
CLDBRN-AWS-RDS-8Flags only DB instances with Performance Insights enabled and a retention period above the included 7-day baseline.rdsiac
CLDBRN-AWS-RDS-9Flags only RDS DB instances whose discovered dbInstanceStatus is stopped, surfacing them for cleanup review.rdsdiscovery
CLDBRN-AWS-RDS-10Flags only manual RDS snapshots whose parsed snapshotCreateTime is at least 90 days old. Automated snapshots and snapshots with invalid timestamps are skipped.rdsdiscovery
CLDBRN-AWS-REDSHIFT-1Reviews only available clusters and treats a 14-day average CPUUtilization of 10% or lower as low utilization.redshiftdiscovery
CLDBRN-AWS-REDSHIFT-2Reviews only available clusters with a parsed create time at least 180 days old and requires active reserved-node coverage for the same node type.redshiftdiscovery
CLDBRN-AWS-REDSHIFT-3Flags only available, VPC-backed clusters with automated snapshots enabled, no HSM, and no Multi-AZ deployment when either the pause or resume schedule is missing.redshiftdiscovery, iac
CLDBRN-AWS-ROUTE53-1Reviews only non-alias records and treats 3600 seconds as the low-TTL floor.route53discovery, iac
CLDBRN-AWS-ROUTE53-2Flags only Route 53 health checks that are not referenced by any in-scope record set.route53discovery, iac
CLDBRN-AWS-S3-1Ensure S3 buckets define lifecycle management policies.s3iac, discovery
CLDBRN-AWS-S3-2Recommend Intelligent-Tiering or another explicit storage-class transition for lifecycle-managed buckets.s3iac, discovery
CLDBRN-AWS-S3-3Flags buckets when no enabled lifecycle rule aborts incomplete multipart uploads within 7 days.s3iac, discovery
CLDBRN-AWS-S3-4Flags only versioned buckets and requires either noncurrent-version expiration or transition cleanup to avoid unbounded version growth.s3iac
CLDBRN-AWS-SAGEMAKER-1Flags only notebook instances whose normalized status remains InService.sagemakerdiscovery
CLDBRN-AWS-SAGEMAKER-2Flags only endpoints whose normalized status remains InService, whose parsed creationTime is at least 14 days old, and whose complete 14-day Invocations total stays at 0. Endpoints with incomplete metrics are skipped.sagemakerdiscovery
CLDBRN-AWS-SECRETSMANAGER-1Flags secrets with no lastAccessedDate and secrets whose parsed last access is at least 90 days old.secretsmanagerdiscovery
CLDBRN-AWS-TAGGING-1Opt-in. Uses an accessible Resource Explorer aggregator and resourcetype.supports:tags tag:none to flag taggable resources without user-created tags across the account. AWS-managed tags do not satisfy the rule.taggingdiscovery
CLDBRN-AWS-LAMBDA-1Recommend arm64 architecture when compatible.lambdaiac, discovery
CLDBRN-AWS-LAMBDA-2Uses 7-day CloudWatch totals and flags only functions whose observed Errors / Invocations ratio is greater than 10%.lambdadiscovery
CLDBRN-AWS-LAMBDA-3Reviews only functions with configured timeouts of at least 30 seconds and flags when the timeout is at least 5x the observed 7-day average duration.lambdadiscovery
CLDBRN-AWS-LAMBDA-4Reviews only functions configured above 256 MB, requires invocation history, and flags them when the observed 7-day average duration uses less than 30% of the configured timeout.lambdadiscovery
CLDBRN-AWS-LAMBDA-5Flags explicit provisioned concurrency configuration when provisioned concurrent executions are greater than zero.lambdaiac

Presets

Preset IDNameRule IDs
aws-coreAWS CoreAll AWS rules above except opt-in CLDBRN-AWS-TAGGING-1