Core AWS Services: EC2, S3 and More
Get hands-on with the essential AWS services every cloud engineer uses daily.
From concepts to real services
You understand the three pillars — now let's meet the specific AWS services that bring them to life. AWS has hundreds, but a handful do most of the work, and knowing these well covers the vast majority of real cloud projects. We'll focus on the essentials every cloud engineer uses, starting with the two most famous services in all of cloud computing.
EC2: virtual servers (Compute)
EC2 (Elastic Compute Cloud) is AWS's core compute service — rentable virtual servers. "Elastic" means you can easily scale up or down. When you launch an EC2 instance, you get a full computer in the cloud that you control: choose its size (CPU/memory), its operating system (Linux or Windows), and what you install on it. You then connect to it and run your application, just like a physical server — but available in minutes and billed by the second.
# After launching a Linux EC2 instance, you connect via SSH:
ssh -i my-key.pem ec2-user@your-instance-ip
# Then it's just a Linux server — install and run whatever you need:
sudo yum install -y nginx # install a web server
sudo systemctl start nginx # start it — your server is now live!
EC2 instances come in types optimised for different needs — some have lots of CPU (for heavy computation), some lots of memory (for large datasets), some balanced (for general use). Choosing the right instance type for your workload is a practical skill that affects both performance and cost. EC2 is the workhorse of AWS compute.
S3: object storage (Storage)
S3 (Simple Storage Service) is AWS's object storage — and one of the most widely used cloud services in existence. It stores files of any type and size: images, videos, backups, documents, website assets. It's massively scalable (effectively unlimited), extremely durable (your data is copied across multiple locations so it's virtually never lost), and cheap. Countless apps and websites store their files in S3.
In S3, you create buckets (think of them as top-level folders), and put your files (objects) inside. Each file gets a unique address you can use to access it:
# Using the AWS command-line tool to work with S3:
aws s3 mb s3://my-app-photos # make a bucket
aws s3 cp photo.jpg s3://my-app-photos/ # upload a file
aws s3 ls s3://my-app-photos # list files in the bucket
Common uses: storing user-uploaded files, hosting static websites, keeping backups, and serving media. When an app needs to store a file rather than structured data, S3 is almost always the answer. Its combination of scale, durability, and low cost makes it a cornerstone of cloud architecture.
The supporting cast
Beyond EC2 and S3, a few more services come up constantly. You don't need deep expertise in each yet, but knowing what they're for orients you:
- RDS — managed databases (we'll cover this in the next chapter). AWS runs the database for you.
- Lambda — "serverless" compute: run a function without managing any server at all. You just provide code; AWS runs it on demand and you pay only when it runs.
- VPC — your private, isolated network where your resources live securely (the networking pillar).
- IAM — Identity and Access Management: controls who can do what in your account (critical for security, covered later).
- CloudFront — a content delivery network that caches your content close to users worldwide for speed.
This short list — EC2, S3, RDS, Lambda, VPC, IAM, CloudFront — covers an enormous range of real-world cloud work. Master these and you can build and run serious applications.
Serverless: a glimpse of the modern way
One modern approach worth understanding is serverless computing, exemplified by AWS Lambda. The name is a little misleading — there are still servers, but you never manage them. You just write a function, and AWS runs it whenever it's triggered (by a request, a file upload, a schedule), automatically scaling and charging you only for the actual execution time:
# A simple AWS Lambda function (Python) — runs on demand, no server to manage
def lambda_handler(event, context):
name = event.get("name", "world")
return {
"statusCode": 200,
"body": f"Hello, {name}! This ran without any server to manage."
}
Serverless is brilliant for tasks that run occasionally or unpredictably — you pay nothing when it's idle and it scales automatically when busy. It represents a shift from "managing servers" to "just running code", and it's increasingly popular. You now have a working knowledge of AWS's essential services. Next, we'll go deeper into one of the most important parts of any application: databases in the cloud.
Finished "Core AWS Services: EC2, S3 and More"?
Mark this chapter complete so you can pick up exactly where you left off. Your progress saves locally — sign in to sync across devices.
Was this chapter clear?
