)
AWS Services Explained: What EC2, RDS, S3, Lambda, CloudFront and EKS Actually Do and What They Cost
Most AWS bills are driven by six services. Understanding what each one does, how it's priced, and where the hidden costs sit is the foundation of any serious cloud cost strategy.
AWS offers over 200 services, but for the overwhelming majority of startups and scaleups, 80 to 90 percent of the monthly bill comes from a predictable core: compute, managed databases, object storage, serverless functions, content delivery, and Kubernetes orchestration. The rest - the dozens of specialised services, AI APIs, and analytics tools - are real and useful, but they are secondary charges layered on top of this foundation.
This guide explains each of those six foundational services in plain terms, walks through how each one is priced, and surfaces the cost categories that even experienced engineering teams consistently miss when building AWS cost estimates. If you want to see the numbers for your specific setup without logging into AWS, Binerals' free AWS cost calculator covers all six services with real-time estimates.
EC2 - Elastic Compute Cloud
EC2 is AWS's virtual machine service and, for most architectures, the largest single item on the monthly invoice. When engineers say a service is "running on AWS," they usually mean it is running on an EC2 instance - a virtual server with a specific allocation of CPU, memory, and network bandwidth, running in a data center in the region of your choice.
Instance Families and When to Use Each
The most important purchasing decision in EC2 is the instance type, because the wrong choice either leaves performance on the table or wastes money on resources the workload never uses.
General-purpose instances - the t3 and m5 families - suit most web applications, APIs, and microservices. The t3 series uses burstable CPU credits, which makes it cost-effective for workloads with variable traffic, since you pay for a baseline allocation and burst above it when demand spikes. The m5 series provides consistent, balanced CPU and memory without the burst model, making it the better choice for steady workloads that need predictable performance.
Compute-optimised instances, specifically the c5 family, deliver a higher ratio of CPU to memory. They are the right choice for video encoding, scientific computing, high-traffic front-ends, and machine learning inference workloads where processing speed matters more than memory.
Memory-optimised instances - the r5 family - invert that ratio, providing significantly more RAM per CPU core. In-memory databases, large data processing jobs, and applications that cache substantial datasets in memory are where r5 instances earn their premium.
EC2 Purchase Models and the Real Cost Differences
The purchase model chosen for EC2 instances typically has a larger impact on cost than the instance type itself, which is why it deserves careful attention during the estimation phase.
On-Demand pricing is the baseline: full list price, no commitment, billed by the second. It is the right model for development environments, unpredictable traffic, and any workload that might be turned off within the next year. The flexibility is worth the premium when you genuinely need it.
Reserved Instances trade that flexibility for predictability, offering discounts of 38 percent on a one-year commitment and up to 57 percent on a three-year commitment. For production workloads running continuously - web servers, application servers, anything that is on 24 hours a day - Reserved Instances are almost always the right model, because the savings compound over time and the workload is not going anywhere.
Spot Instances are AWS's way of selling unused capacity at discounts that can reach 70 to 90 percent off On-Demand pricing. The trade-off is that AWS can reclaim the instance with two minutes' notice, which makes Spot unsuitable for stateful production services but excellent for batch processing, continuous integration runners, stateless worker queues, and machine learning training jobs that can tolerate interruption and restart.
Savings Plans, introduced as a more flexible alternative to Reserved Instances, work by committing to a consistent spend level - a dollar amount per hour - rather than a specific instance type. That commitment applies automatically across EC2, Lambda, and Fargate regardless of region, operating system, or instance family, which makes them easier to manage for teams whose infrastructure is actively evolving.
Not sure which EC2 instance type and purchase model is right for your workload?
Run your estimateRDS - Relational Database Service
RDS is AWS's managed relational database offering, supporting MySQL, PostgreSQL, MariaDB, Oracle, SQL Server, and the Aurora variants of MySQL and PostgreSQL. The core value of RDS is operational: AWS handles automated backups, software patching, replication, and failover, which removes a significant operational burden from engineering teams that would otherwise need to manage those concerns themselves on a self-hosted database.
How RDS Pricing Works
RDS pricing combines three components: the instance cost, the storage cost, and optionally, the cost of Multi-AZ deployment. The instance cost follows the same instance family logic as EC2 - general-purpose, memory-optimised, and so on - and the same On-Demand versus Reserved model applies, with Reserved RDS instances offering similar discounts for one- or three-year commitments.
Storage in RDS is provisioned separately and billed per gigabyte per month. The storage type matters: gp2 and gp3 general-purpose SSD storage is appropriate for most workloads, while io1 and io2 provisioned IOPS storage is available for databases with demanding latency requirements. The provisioned IOPS cost - $0.065 to $0.125 per IOPS per month on top of the storage cost - is consistently underestimated in initial RDS estimates and can add hundreds of dollars per month for high-throughput database configurations.
Multi-AZ deployment is the RDS feature that most commonly surprises teams during budget reviews. Enabling Multi-AZ, which keeps a synchronous standby replica in a second Availability Zone for automatic failover, roughly doubles the instance cost. For production databases, Multi-AZ is almost always the right call from a reliability standpoint - a database that goes down takes the entire application with it. But the cost impact needs to be in the estimate from the beginning, not discovered on the first invoice.
S3 - Simple Storage Service
S3 is AWS's object storage service and one of the oldest AWS services still in active use. It stores data as objects - files of any type and size - in buckets, with no file system hierarchy and no size limits. S3 is where applications store user uploads, static assets, log archives, database backups, and any other data that needs to be durable and accessible without being actively processed.
S3 Storage Tiers
The choice of S3 storage class has a significant impact on cost, and the right tier depends entirely on how frequently the stored data is accessed.
S3 Standard is the default class: high availability, low latency, and immediate access, billed at around $0.023 per GB per month in US regions. It is the right tier for data that is read frequently - active user uploads, application assets, frequently queried exports.
S3 Standard-IA (Infrequent Access) reduces the storage cost to around $0.0125 per GB per month in exchange for a per-retrieval fee and a 30-day minimum storage commitment. It suits data that needs to remain immediately accessible but is rarely actually read - compliance records, historical logs, older backups.
S3 Glacier Instant Retrieval brings the storage cost down further, to around $0.004 per GB per month, for data that is accessed very rarely but needs to be retrievable in milliseconds when it is. Long-term archives and cold backup storage are the primary use cases.
The S3 Costs That Get Missed
Two S3 cost categories are consistently absent from first-pass estimates. The first is request pricing: every PUT, GET, COPY, and DELETE operation carries a small per-request charge. At low volumes this is negligible, but an application making millions of S3 API calls per month - for thumbnail generation, for example, or serving assets from a bucket - will see meaningful request costs appear on the bill. The second is data transfer out: moving data from S3 to the public internet costs $0.09 per GB in most regions. For applications that serve large files directly from S3 without CloudFront as an intermediary, data transfer can become a significant cost driver.
Lambda - Serverless Functions
Lambda is AWS's serverless compute offering. Rather than running a continuously allocated server, Lambda executes functions in response to events - an HTTP request, a message in a queue, a file uploaded to S3, a scheduled timer - and bills only for the time the function is actually running, measured to the nearest millisecond.
Lambda Pricing in Practice
Lambda pricing has two components: the number of requests and the duration of execution, measured in GB-seconds - gigabytes of memory allocated multiplied by seconds of execution time. The AWS free tier covers one million requests and 400,000 GB-seconds per month permanently, which means small workloads and development environments often cost nothing at all.
For production workloads, Lambda becomes cost-effective when execution is genuinely event-driven and infrequent. An API endpoint that handles ten requests per second is not a good Lambda candidate - at that request volume, a continuously running EC2 instance or container will almost always be cheaper. Lambda's cost advantage appears in workloads with irregular, spiky, or unpredictable invocation patterns: image processing triggered by uploads, data transformation jobs triggered by database events, webhook handlers for third-party integrations.
The Savings Plans that apply to EC2 also cover Lambda, allowing teams to commit to a consistent Lambda spend level in exchange for discounts on compute, which is worth evaluating once Lambda usage patterns are well understood.
CloudFront - Content Delivery Network
CloudFront is AWS's CDN, distributing content from a global network of edge locations to reduce latency for end users and reduce the load on origin servers. When a user requests a cached resource from CloudFront, the response comes from the nearest edge location rather than the origin server, which can reduce response time dramatically for geographically distributed users.
CloudFront Pricing Structure
CloudFront billing combines two components: data transfer out from edge locations and HTTPS request volume. The data transfer rate is tiered, starting at $0.0085 per GB for the first 10 TB per month in most regions and decreasing at higher volumes. The request pricing adds a small per-request charge on top of the transfer cost.
The cost relationship between CloudFront and S3 is worth understanding explicitly. CloudFront data transfer from S3 to CloudFront edge locations is free - AWS does not charge for data moving between its own services within the same region. The data transfer charge applies only when content moves from CloudFront to end users. For applications serving significant volumes of static content, this makes CloudFront a cost-reducing tool rather than an additive one: the savings on S3 data-transfer-out charges, plus the improvement in user experience, typically more than offset the CloudFront fees.
EKS - Elastic Kubernetes Service
EKS is AWS's managed Kubernetes service, handling the control plane - the scheduler, the API server, the etcd cluster - while leaving the worker nodes to the user to provision and manage. It is the standard choice for teams running containerised workloads at scale who want Kubernetes without the operational overhead of self-managing the control plane.
Why EKS Costs Are Consistently Underestimated
EKS has a flat control plane fee of $0.10 per hour per cluster, which amounts to $72 per month per cluster. Most AWS pricing estimators and early-stage cost models stop there - and that is where the estimate breaks down.
The actual cost of running EKS is dominated not by the control plane fee but by the EC2 worker nodes that run the containerised workloads. In most production EKS deployments, the worker nodes represent 80 to 95 percent of the total EKS cost, and they are priced exactly like standalone EC2 instances - because they are standalone EC2 instances, just managed as part of a node group. A correctly calculated EKS estimate includes the control plane fee, the EC2 cost for every worker node, and the data transfer costs between nodes, between Availability Zones, and out to the internet. Failing to account for all three produces an estimate that can be off by an order of magnitude.
Want to see the real EKS cost for your cluster configuration, including worker nodes?
Contact BineralsHidden AWS Costs That Appear on the Invoice but Not in the Estimate
Understanding each service's base pricing is necessary but not sufficient for accurate AWS cost estimation. Several recurring charges consistently show up on invoices having never appeared in the estimate.
NAT Gateway
A NAT Gateway allows resources in private subnets - EC2 instances with no public IP - to access the internet for software updates, API calls, and external integrations. NAT Gateway is billed at $0.045 per hour per gateway plus $0.045 per GB of data processed. A standard three-Availability-Zone deployment runs three NAT Gateways, adding $97 in hourly charges before any data processing costs. At moderate traffic volumes, NAT Gateway regularly adds $200 to $400 per month to bills where it was never estimated.
Inter-Availability Zone Data Transfer
Traffic crossing Availability Zone boundaries within the same region costs $0.01 per GB in each direction. For a highly available architecture where application servers in one AZ communicate with a database in another, or where services in different AZs exchange data as part of normal operation, this charge accumulates quickly. Five hundred gigabytes of inter-AZ traffic per day adds over $300 per month - none of which appears in the standard AWS pricing estimator.
AWS Support Plans
AWS's Business Support plan starts at $100 per month or 10 percent of monthly AWS spend, whichever is higher. On a $10,000 monthly bill, support adds $1,000. On bills above $80,000, the percentage steps down but the absolute cost continues to climb. Support plan costs are rarely included in initial infrastructure estimates and are among the most consistent sources of invoice surprises for growing teams.
Elastic IP Idle Charges
Elastic IPs - static public IP addresses - are free when attached to a running EC2 instance. The moment the instance is stopped or terminated, the Elastic IP begins accruing a charge of $0.005 per hour, approximately $3.60 per month per idle address. Individual idle Elastic IPs are small charges, but environments with many instances - development, staging, test - accumulate them quickly, and they are almost never included in any estimate.
Conclusion
The six AWS services that drive most cloud bills - EC2, RDS, S3, Lambda, CloudFront, and EKS - are individually straightforward once the pricing model is understood. The complexity, and the source of most invoice surprises, is in the interaction between services, the hidden charges that appear at the boundaries between them, and the gap between what the official AWS pricing calculator shows and what actually appears on the bill.
Getting to an accurate AWS cost estimate requires accounting for all six service costs, the correct purchase model for each, and the recurring charges - NAT Gateway, inter-AZ transfer, support plans, idle Elastic IPs - that consistently go missing from first-pass estimates. The Binerals AWS cost calculator covers all six services, surfaces the hidden cost categories the official tool skips, and lets you compare purchase models in real time without logging into AWS.
