awsmwaaairflowdata-engineeringcost-optimization

MWAA cost: why managed Airflow starts at $350/month

Amazon MWAA bills a continuous base environment fee with no scale-to-zero, so even an idle environment costs ~$350/month. Here's the cost breakdown, why the floor exists, and how to keep it down.

The C3X Team··9 min read

Quick answer

Amazon MWAA runs a base environment, scheduler, web server, and one worker, continuously, with no scale-to-zero. An mw1.small base is about $358/month before any extra workers, billed whether DAGs run or not. The cost is the always-on environment; autoscaling workers and metadata storage add on top. Right-sizing the environment class and keeping min_workers low are the main levers.

Managed Workflows for Apache Airflow removes the ops burden of running Airflow yourself, but the pricing model catches teams off guard: there's a substantial floor that exists the moment the environment is created.

The three components

1. Base environment hour (the floor)

Set by environment_class, billed continuously:

  • mw1.small: ~$0.49/hour (~$358/month)
  • mw1.medium: ~$0.88/hour (~$642/month)
  • mw1.large: ~$1.65/hour (~$1,205/month)

The base includes one worker and one scheduler. There is no pause or scale-to-zero, this runs 24/7 while the environment exists.

2. Additional worker hours

Workers that autoscale beyond the included baseline bill per worker-hour at a class-specific rate (~$0.055/hour for mw1.small). This is usage-based, driven by DAG concurrency.

3. Metadata database storage

The Airflow metadata DB bills per GB-month. Usually small.

Why the floor exists

Airflow needs a scheduler and web server running continuously to evaluate DAG schedules and serve the UI. MWAA provisions these as a managed, always-on environment, so unlike serverless options there's no scaling to zero. The convenience of not operating Airflow is exactly what you pay the floor for.

Keeping it down

  • Right-size the class to scheduler load: if your DAGs are numerous but light, mw1.small with more autoscaling workers beats jumping to mw1.medium.
  • Keep min_workers low: let the environment scale workers down when idle so you pay the base plus only the workers you use.
  • Consolidate environments: each environment carries its own floor. One well-organized environment beats several lightly-used ones.

See the floor before you apply

The ~$358 floor is invisible in the Terraform until you multiply it out. C3X prices an aws_mwaa_environment from environment_class so the base cost shows up in your pull request:

c3x estimate --path . --budget 500

For lighter orchestration that doesn't carry an always-on floor, compare against Step Functions, and for the data-pipeline alternatives see AWS Glue jobs.

Try C3X on your own Terraform

Free and open source. No API key required. One command to install, one command to estimate.