Compare AWS MWAA pricing vs self-hosted Airflow on EKS. Real cost analysis, workload examples, and ROI breakdown for data teams.
If you're running Apache Airflow at scale, you've hit the same wall: the choice between paying AWS for convenience or managing infrastructure yourself and keeping the bill low. This isn't a theoretical debate. Teams we work with at D23 routinely handle data pipelines that generate tens of thousands in monthly infrastructure costs, and the difference between MWAA and self-hosted can swing 10x in either direction depending on your workload.
This article walks through the actual numbers—not marketing claims. We'll break down Amazon Managed Workflows for Apache Airflow (MWAA) pricing, compare it against self-hosted deployments on EKS (Elastic Kubernetes Service), and show you the real trade-offs: when managed makes sense, when self-hosted wins on cost, and what hidden expenses both approaches carry.
AWS MWAA charges you for three things: scheduler capacity, worker capacity, and data storage. Unlike many AWS services, there's no minimum commitment or upfront fee—you pay for what you use, which sounds good in theory but hides complexity in practice.
Scheduler Costs: MWAA charges per "scheduler unit" per hour. A scheduler is the brain of Airflow—it parses DAGs (directed acyclic graphs), decides which tasks to run, and tracks dependencies. AWS offers small, medium, and large schedulers:
For a typical mid-market data team running 50–200 DAGs, a medium scheduler handles baseline load. But here's where it gets expensive: during peak scheduling windows (when Airflow parses and queues tasks), you may need to scale up, and you pay for the upgrade even if it's only for 30 minutes.
Worker Costs: Workers execute the actual tasks in your DAGs. MWAA charges per "worker unit" per hour, with three tiers:
Unlike traditional EC2 instances where you provision fixed capacity, MWAA auto-scales workers based on task queue depth. This sounds efficient, but the catch is you're charged for every second a worker exists—even if it's idle for 55 seconds of every minute. One team we consulted had 20 workers sitting idle 80% of the time because their DAGs were bursty, costing them $4,200/month in unused capacity.
Storage Costs: MWAA uses S3 for DAG storage and logs. AWS charges standard S3 rates (~$0.023 per GB/month), plus request costs. For a typical environment with 100–500 DAGs and moderate logging, expect $20–100/month. This is negligible compared to compute.
Typical MWAA Bill Breakdown (Medium Environment):
If you scale to large schedulers during peak or add more workers for parallel DAGs, you're easily at $1,500–2,500/month. At one scale-up we worked with, their MWAA bill hit $6,800/month because they had 8 large workers running to handle a daily batch window that lasted 4 hours.
Self-hosted Airflow on EKS (or EC2, or any IaaS) flips the equation: you pay for fixed infrastructure, then run Airflow on top. The appeal is obvious—you control exactly what you pay for. The hidden cost is operational overhead.
EKS Cluster Costs:
An EKS cluster requires:
For a typical mid-market setup, you'd run 3–5 t3.large instances (2 vCPU, 8 GB RAM) as worker nodes:
This is your baseline, whether you run 1 DAG or 500. The cost doesn't scale with workload—it scales with how many workers you need to handle peak load.
Airflow Pods on EKS:
Within EKS, you deploy Airflow components as pods:
The scheduler and webserver are negligible cost—they fit in your existing node capacity. Workers are where it scales. If you use the KubernetesExecutor (recommended for EKS), each task spawns a new pod. For a DAG with 50 tasks, you get 50 pods. If tasks run in parallel, you need enough node capacity to fit them.
Real-World EKS Scenario:
Let's say you run 100 DAGs, with:
To fit 360 pods, you need roughly:
Using t3.large instances (2 vCPU, 8 GB RAM each):
Add EKS control plane ($73/month), and you're at ~$1,147/month for infrastructure.
But wait—you likely don't run peak load 24/7. If peak only happens 4 hours/day:
If you use reserved instances (1-year commitment), you cut the t3.large cost by ~40% to $0.050/hour, bringing the blended cost down to ~$80/month for compute.
Here's what the spreadsheet doesn't show: self-hosted Airflow requires DevOps time.
Cluster Management:
Airflow Operations:
Incident Response:
A single engineer can manage self-hosted Airflow for a team of 20 data engineers, but they'll spend 10–15 hours/week on operational toil. At $150/hour loaded cost, that's $1,500–2,250/month in OpEx.
MWAA eliminates most of this. AWS handles cluster management, patching, scaling, and failover. Your team focuses on DAG development, not infrastructure. The trade-off: less control and higher compute costs.
Let's ground this in concrete scenarios.
Workload: 10 DAGs, 5–10 tasks each, run once daily, 30-minute total runtime, no parallelism
MWAA:
Self-Hosted EKS:
Winner: MWAA by 2x. For small workloads, managed is cheaper and simpler.
Workload: 50 DAGs, 15 tasks average, 10 run daily, 5 run hourly, peak 100 concurrent tasks, 2-hour peak window daily
MWAA:
Self-Hosted EKS:
Winner: Self-hosted by 25%. At this scale, the operational overhead is justified by cost savings.
Workload: 200 DAGs, 30 tasks average, 50 run daily, 50 run hourly, peak 500 concurrent tasks, 4-hour peak window daily
MWAA:
Self-Hosted EKS:
Winner: Self-hosted by 33%. At enterprise scale, the math strongly favors self-hosted if you have the ops capacity.
These comparisons assume everything goes smoothly. Reality is messier.
MWAA Hidden Costs:
Self-Hosted Hidden Costs:
MWAA isn't the only managed Airflow option. According to comparisons of managed Airflow services, AWS MWAA competes with:
For teams already in AWS, MWAA is the path of least resistance. For teams willing to manage infrastructure, self-hosted on EKS or EC2 is cheaper.
Cost isn't the only variable. MWAA wins when:
Self-hosted makes sense when:
One of the best illustrations comes from a real case study where an engineer reduced their $10,000 monthly AWS Glue bill to $400 using Airflow. While this focused on Glue vs Airflow, the underlying lesson applies: managed services hide true costs, and self-hosted with discipline can be 96% cheaper.
The engineer's approach:
The result: $10K → $400/month. That's extreme, but it illustrates the power of self-hosted when you optimize aggressively.
Regardless of which path you choose, there are universal cost-cutting tactics.
For MWAA:
For Self-Hosted:
Datadog's guide on Airflow cost optimization provides deeper tactics for both approaches, including query optimization and resource monitoring.
Before committing to either approach, model your specific workload. Astronomer provides an interactive Airflow cost calculator that lets you plug in task counts, parallelism, and runtime to estimate MWAA vs self-hosted costs.
Steps to use it:
For most teams, the calculator will show self-hosted is cheaper if peak load is predictable and your team has Kubernetes expertise.
Whichever Airflow deployment you choose, it's likely part of a larger data infrastructure. At D23, we work with teams who use Airflow to orchestrate data pipelines that feed into analytics platforms. The choice between MWAA and self-hosted shouldn't be made in isolation—it should align with your broader data stack.
For example, if you're building self-serve BI dashboards using Apache Superset or embedding analytics in your product, Airflow is the orchestration layer that keeps data fresh. Whether you run MWAA or self-hosted, the downstream analytics infrastructure remains the same. The key is choosing the Airflow deployment that lets your team focus on data quality and analytics, not infrastructure toil.
While this article focuses on Airflow, it's worth noting that MWAA and self-hosted Airflow aren't your only options. Comparisons of managed Airflow services include alternatives like:
For most teams already using Airflow, MWAA and self-hosted are the primary decision. For greenfield projects, it's worth evaluating alternatives.
Here's a simple framework to decide between MWAA and self-hosted:
Choose MWAA if:
Choose Self-Hosted if:
Choose a middle ground (Astronomer or managed Airflow support) if:
AWS MWAA costs $1,000–3,000/month for typical mid-market workloads. Self-hosted Airflow on EKS costs $200–1,500/month for the same workload, plus $300–1,200/month in operational overhead if you count engineer time.
If you value simplicity and have small workloads, MWAA wins. If you have stable, predictable workloads and Kubernetes expertise, self-hosted wins—often by 2–3x.
The key is modeling your specific workload, not relying on averages. Use the MWAA pricing page to estimate your scheduler and worker costs, then compare against self-hosted using the Astronomer cost calculator.
For teams building modern data stacks, Airflow is just one piece of the puzzle. Whether you run MWAA or self-hosted, the goal is the same: reliable, scalable data pipelines that feed analytics, dashboards, and AI-powered insights to your organization. The orchestration layer shouldn't distract from that mission—choose the approach that lets your team focus on data quality and impact, not infrastructure toil.
For more guidance on building scalable data infrastructure, check out D23's approach to managed analytics and how modern data teams are rethinking their BI and analytics stacks.