← Back to calculator

AWS Drupal Infra Price Calculator — Documentation

This tool estimates the monthly and annual AWS cost of running the Drupal infrastructure defined in the terraform-aws-drupal module set, per client, per environment (e.g. dev / stage / prod). It is designed to mirror the variables exposed by that Terraform code so an environment can be configured here exactly as it would be in a terraform.tfvars file.

How pricing is sourced

All unit prices are pulled live from the AWS Price List API, queried against the real AWS account, and cached as JSON for up to 36 hours (a scheduled Lambda refreshes the cache daily). Where AWS does not expose a rate via the API directly — most notably Savings Plans — a clearly labelled, configurable assumption is used instead of a hard number.

Global inputs (per environment)

InputTerraform variableNotes
Regionaws_regionSelects which cached price catalog is used
Hours running per dayderived from enable_schedule24 if always-on; configurable (e.g. 12) if out-of-hours shutdown enabled — applied to ECS/Solr compute only
Savings Plan discount %n/aUser-selected assumption — see below

Cost categories modelled

Networking — NAT Gateway

nat_gateway_count × NAT Gateway hourly rate × 730 hrs/month, plus an estimated GB/month data processed × per-GB rate.

Compute — ECS Fargate

Cost = (task_cpu/1024 vCPU) × (task_memory/1024 GB) × desired_count tasks × hours-running-per-day × 30.42 avg days/month, at the current on-demand Fargate rate for the selected region. Solr (if enable_solr) is priced identically as a second Fargate task.

Database — RDS Aurora

Cache — ElastiCache Redis

Only priced if enable_redis = true, using a configurable node type/count.

Storage — EFS

Configurable estimated GB stored × per-GB-month rate (Standard storage class).

Load Balancing — ALB

Fixed hourly rate × 730 hrs/month, plus an estimated LCU count × per-LCU hourly rate.

CDN — CloudFront

Estimated GB data transfer out/month × per-GB rate, plus estimated request count × per-10k-requests rate.

WAF

Only priced if enable_waf = true: fixed monthly Web ACL charge + per-rule charge + per-million-requests charge.

Backups

Estimated backup storage GB (sized off the DB storage estimate) × per-GB-month backup storage rate. Cross-region copy adds a per-GB data transfer charge.

Logging — CloudWatch Logs

Estimated ingestion GB/month × per-GB ingestion rate + storage GB × retention days × per-GB-month storage rate.

Savings Plans

AWS does not expose Savings Plan rates via the Price List API — discounts depend on commitment term, payment option, and commitment amount, which are commercial choices, not lookups. The calculator instead offers a "Savings Plan discount %" input (based on AWS's published typical Compute Savings Plan discount ranges) applied only to compute-eligible line items (Fargate, RDS provisioned instances). This is clearly labelled in the UI as an estimate, not a live rate.

Out-of-hours shutdown

When enabled for an environment, the calculator reduces the effective monthly hours for ECS/Solr Fargate tasks (and optionally Aurora Serverless) using a configurable "hours running per day" input. NAT Gateway, ALB, CloudFront, storage and backups are treated as running/accruing 24/7 regardless, since they aren't stopped by the schedule module in Terraform.

Output

For each environment: a monthly and annual estimate broken down by cost category. For a client (e.g. vc): the sum across all configured environments (dev + stage + prod), shown as both a per-environment table and a grand total. Use the Export PDF button on the calculator to save or print the current breakdown.

Limitations

These are estimates only. Actual AWS bills depend on real usage (data transfer, request volume, storage growth), AWS support plan, and applicable taxes. Prices are cached for up to 36 hours; use "Refresh prices" on the calculator to force a live lookup.