AWS Glue cost optimization: DPU hours, crawlers, and the catalog
Glue bills about $0.44 per DPU-hour for jobs and crawlers, with a minimum billing per run, plus Data Catalog storage and request fees. Fewer, right-sized DPUs and less frequent crawling are the main levers. Here is the breakdown.
Quick answer
Glue charges roughly $0.44 per DPU-hour for ETL jobs and crawlers, billed per second with a per-run minimum, plus Data Catalog storage and request fees (the first million objects and million requests are free). The bill is DPU count times job duration times run frequency, so right-size DPUs and crawl less often.
Glue cost is mostly compute measured in Data Processing Units. A job or crawler runs on some number of DPUs for some duration, and you pay the product. The Data Catalog adds a small storage and request charge that is free for most teams.
DPU-hours are the bill
A DPU is a fixed slice of compute, and Glue bills about $0.44 per DPU-hour, per second, with a minimum per run (one minute for newer job types, ten for older). A job on ten DPUs for six minutes costs ten DPUs times a tenth of an hour times the rate. Two levers move it: how many DPUs you allocate and how long the job runs.
Right-size DPUs
More DPUs finish faster but cost the same total if the work scales linearly, and cost more if the job cannot use them. Over-allocating DPUs to a job that does not parallelize wastes money. Use job metrics to find the DPU count where adding more stops reducing runtime, and stop there.
Crawlers and the catalog
| Dimension | Rate (approximate) |
|---|---|
| ETL job / crawler | ~$0.44 / DPU-hour, per-run minimum |
| Data Catalog storage | First 1M objects free, then ~$1 / 100k / month |
| Data Catalog requests | First 1M free, then ~$1 / million |
Crawlers are billed like jobs, so crawling everything hourly is a common waste. Crawl only the datasets that change, on a schedule that matches how often they change, or trigger crawls on new data instead of a fixed clock.
Cutting Glue cost
Right-size DPUs, reduce crawler frequency, and prefer job bookmarks so jobs process only new data rather than reprocessing everything. Consider whether a query engine like Athena over partitioned data avoids some ETL entirely, since the cheapest job is the one you do not run.
FAQ
How is AWS Glue priced?
About $0.44 per DPU-hour for ETL jobs and crawlers, billed per second with a per-run minimum, plus Data Catalog storage and request fees. The first million catalog objects and million requests per month are free, so the catalog is usually negligible.
What is a DPU in Glue?
A Data Processing Unit is a fixed slice of compute (memory and vCPU). Glue bills per DPU-hour, so a job's cost is the number of DPUs times its runtime times the rate. DPU count and job duration are the two cost levers.
How do I reduce Glue job cost?
Right-size DPUs to the point where adding more stops reducing runtime, use job bookmarks so jobs process only new data, and avoid over-allocating DPUs to jobs that do not parallelize. More DPUs only help if the job can use them.
Why are my Glue crawlers expensive?
Crawlers bill like jobs, so crawling everything on a frequent fixed schedule wastes DPU-hours. Crawl only datasets that change, match the schedule to how often they change, or trigger crawls on new data instead of a clock.
Is the Glue Data Catalog expensive?
Rarely. The first million objects stored and million requests per month are free; beyond that it is about $1 per 100,000 objects per month and $1 per million requests. For most teams the catalog is a negligible part of the Glue bill.
Does C3X estimate Glue cost?
C3X prices aws_glue_job, aws_glue_crawler, and catalog resources from your Terraform. Because cost depends on DPU allocation and run frequency, you provide those as usage assumptions for a complete estimate.
What to do next
Price your data pipeline before you run it. C3X reads your Terraform and prices Glue and the rest of your stack against a live catalog. Start with the quickstart.
Share this post
Try C3X on your own Terraform
Free and open source. No API key required. One command to install, one command to estimate.