AWS Fundamentals — Complete Beginner's Guide to Amazon Web Services
Amazon Web Services (AWS) is the world’s leading cloud platform, offering over 200 services for computing, storage, databases, machine learning, and more — used by startups, enterprises, and governments worldwide.
What You’ll Learn
By the end of this tutorial, you’ll understand the core AWS services (EC2, S3, Lambda, IAM, VPC), how to set up your first AWS account, launch a virtual server, store files in the cloud, and implement basic security practices.
Why AWS Matters
AWS powers over 30% of the global cloud market — more than Azure and GCP combined. Companies from Netflix to NASA rely on AWS. Understanding AWS is the most in-demand cloud skill in 2026. At DodaTech, DodaZIP uses AWS S3 for file storage and Lambda for serverless thumbnail generation.
AWS Learning Path
flowchart LR
A[Cloud Basics] --> B[AWS]
B --> C{You Are Here}
C --> D[EC2 Compute]
C --> E[S3 Storage]
C --> F[Lambda Serverless]
D --> G[Complete AWS App]
style C fill:#f90,color:#fff
What Is AWS? (The “Why” First)
Think of AWS as a giant vending machine for IT infrastructure. Need a server? Insert a credit card, get one running in 60 seconds. Need 100 servers? Same process. Need to store a billion files? Just pay for what you use.
Before AWS, launching a new product meant ordering servers, waiting weeks for delivery, and paying for capacity you might not use for months. AWS flipped that model — now you provision resources in minutes and scale instantly.
Core AWS Services
EC2 — Elastic Compute Cloud
EC2 provides virtual servers (instances) in the cloud. You choose the operating system, CPU, memory, and storage.
Key concepts:
- AMI (Amazon Machine Image) — pre-configured OS template
- Instance type — hardware specs (t3.micro = 2 vCPUs, 1GB RAM)
- Security group — firewall rules (what ports are open)
- Key pair — SSH key for secure login
# Connecting to your first EC2 instance
# After launching an instance and downloading the key pair:
chmod 400 my-key.pem
ssh -i my-key.pem ec2-user@<public-ip-address>
# Once connected, check the instance:
cat /etc/os-release
# Output: NAME="Amazon Linux"
free -h
# Shows memory
df -h
# Shows diskEC2 pricing options:
| Option | Description | Use Case |
|---|---|---|
| On-Demand | Pay per hour/second | Variable workloads, testing |
| Reserved | 1-3 year commitment, up to 72% discount | Steady-state production |
| Spot | Bid for unused capacity, up to 90% discount | Batch processing, fault-tolerant apps |
| Savings Plans | Flexible compute commitment | Mixed workloads |
S3 — Simple Storage Service
S3 stores any amount of data in “buckets” (containers). It’s the most widely used AWS service.
Key concepts:
- Bucket — a container for objects (files)
- Object — a file with metadata (up to 5TB)
- Key — the unique identifier for an object
- Region — where the bucket is physically located
# aws_s3_demo.py
# Interacting with S3 using Python (requires AWS credentials)
import boto3
def list_buckets():
"""List all S3 buckets in your account."""
s3 = boto3.client('s3')
try:
response = s3.list_buckets()
print("Your S3 Buckets:")
for bucket in response['Buckets']:
print(f" - {bucket['Name']} (created {bucket['CreationDate']})")
except Exception as e:
print(f"Error: {e}")
print("Make sure AWS credentials are configured.")
def upload_demo_file():
"""Upload a sample file to S3."""
s3 = boto3.client('s3')
bucket_name = "dodatech-demo-" + str(hash("demo"))[-6:]
try:
# Create bucket
s3.create_bucket(Bucket=bucket_name)
print(f"Created bucket: {bucket_name}")
# Upload a file
content = b"Hello from DodaTech AWS Tutorial!"
s3.put_object(Bucket=bucket_name, Key="hello.txt", Body=content)
print(f"Uploaded hello.txt")
# Download and verify
response = s3.get_object(Bucket=bucket_name, Key="hello.txt")
data = response['Body'].read()
print(f"Downloaded: {data.decode()}")
# Clean up
s3.delete_object(Bucket=bucket_name, Key="hello.txt")
s3.delete_bucket(Bucket=bucket_name)
print(f"Cleaned up bucket: {bucket_name}")
except Exception as e:
print(f"Error: {e}")
if __name__ == "__main__":
upload_demo_file()Expected output:
Created bucket: dodatech-demo-123456
Uploaded hello.txt
Downloaded: Hello from DodaTech AWS Tutorial!
Cleaned up bucket: dodatech-demo-123456S3 storage classes:
| Class | Durability | Retrieval | Cost | Use Case |
|---|---|---|---|---|
| Standard | 99.999999999% | Instant | Higher | Frequently accessed data |
| Infrequent Access | 99.999999999% | Instant | Lower | Backups, old media |
| Glacier | 99.999999999% | 1-12 hours | Lowest | Archives, compliance |
Lambda — Serverless Computing
Lambda runs code without provisioning or managing servers. You upload code, set a trigger, and AWS runs it when needed.
# lambda_function.py
# A simple AWS Lambda function
import json
def lambda_handler(event, context):
"""Process an S3 upload event."""
print(f"Received event: {json.dumps(event)}")
# Extract bucket and key from S3 event
for record in event.get('Records', []):
bucket = record['s3']['bucket']['name']
key = record['s3']['object']['key']
print(f"File uploaded: s3://{bucket}/{key}")
# In a real app, you'd process the file here
# e.g., generate thumbnails, scan for malware, etc.
return {
'statusCode': 200,
'body': json.dumps('Processing complete')
}Lambda triggers:
- S3 upload → process file (e.g., image resizing)
- API Gateway → respond to HTTP requests
- CloudWatch → scheduled tasks
- SQS → message queue processing
IAM — Identity and Access Management
IAM controls who can access your AWS resources. This is the most important security service.
Best practices:
- Root user — only for account setup. Never use daily.
- Create IAM users — one per person or application
- Least privilege — grant only the permissions needed
- Use IAM roles — for EC2 instances and Lambda functions
- Enable MFA — on the root account and all users
VPC — Virtual Private Cloud
VPC lets you create an isolated network within AWS with full control over IP addresses, subnets, and routing.
flowchart TD
subgraph AWS Cloud
subgraph VPC
subgraph "Public Subnet"
EC2[Web Server]
LB[Load Balancer]
end
subgraph "Private Subnet"
DB[(Database)]
end
GW[Internet Gateway]
end
end
Internet --> GW --> LB --> EC2
EC2 --> DB
Deploying Your First Application
A complete web app on AWS involves:
- S3 — host static files (HTML, CSS, JS)
- EC2 or Lambda — run backend code
- RDS — managed database (PostgreSQL, MySQL)
- Route 53 — DNS management
- CloudFront — CDN for fast global delivery
Common AWS Mistakes
1. Leaving Root Access Without MFA
Root account compromise means losing your entire AWS account. Enable MFA immediately.
2. Exposing S3 Buckets Publicly
By default, S3 buckets are private. Public buckets require explicit configuration. Always double-check bucket policies.
3. Not Using Cost Explorer
AWS costs can spiral. Use Cost Explorer to track spending and set budget alerts from day one.
4. Using the Wrong Instance Type
A t3.micro is fine for testing but will buckle under production load. Right-size instances based on monitoring data.
5. Ignoring Availability Zones
Deploy across at least two availability zones for high availability. A single-AZ deployment goes down when that AZ has an outage.
6. Hardcoding Credentials
Never put AWS credentials in code. Use IAM roles for EC2/Lambda, and environment variables or AWS Secrets Manager for local development.
7. Not Setting Up CloudWatch Alarms
Without monitoring, you won’t know about spikes, errors, or performance degradation until users complain.
Practice Questions
1. What does EC2 provide and what are the four pricing models?
EC2 provides virtual servers (compute instances). Pricing: On-Demand (pay per hour), Reserved (commitment discount), Spot (unused capacity discount), Savings Plans (flexible compute commitment).
2. What is S3 and how does it organize data?
S3 is object storage. Data is stored in buckets (containers) as objects (files) identified by a unique key. Objects can be up to 5TB.
3. What is AWS Lambda and when should you use it?
Lambda runs code without managing servers. Use it for event-driven tasks: file processing, API backends, scheduled tasks, and real-time data processing.
4. What is the principle of least privilege in IAM?
Grant only the minimum permissions needed for a user or service to function. This limits the blast radius if credentials are compromised.
5. Challenge: Design a highly available web app architecture using AWS services.
Use: S3 + CloudFront for static files, EC2 Auto Scaling group across 2+ AZs with an ALB, RDS Multi-AZ for the database, Route 53 for DNS routing.
Mini Project: Static Website on S3
# Deploy a static website on AWS S3 in 5 minutes
# 1. Create a bucket (must be globally unique)
aws s3 mb s3://my-dodatech-site-2026
# 2. Enable static website hosting
aws s3 website s3://my-dodatech-site-2026 \
--index-document index.html \
--error-document error.html
# 3. Create a simple index.html
echo "<h1>Hello from DodaTech AWS Tutorial!</h1>" > index.html
# 4. Upload the file
aws s3 cp index.html s3://my-dodatech-site-2026/
# 5. Make it publicly readable
aws s3api put-bucket-policy --bucket my-dodatech-site-2026 \
--policy '{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-dodatech-site-2026/*"
}]
}'
# 6. Visit the site
echo "Site URL: http://my-dodatech-site-2026.s3-website-<region>.amazonaws.com"This same approach hosts the download pages for DodaZIP and Durga Antivirus Pro.
FAQ
Try It Yourself
Create an AWS Free Tier account and complete these steps:
- Launch a t2.micro EC2 instance (Amazon Linux)
- SSH into the instance and run
sudo yum update - Install a web server:
sudo yum install -y httpd - Start the server:
sudo systemctl start httpd - Access the public IP in your browser — you’ll see the Apache test page
This proves you can deploy servers in the cloud — the same process DodaTech uses to deploy Doda Browser update servers and Durga Antivirus Pro signature distribution nodes.
What’s Next
What’s Next
Congratulations on completing this AWS Fundamentals tutorial! Here’s where to go from here:
- Practice daily — Consistency is more important than long study sessions
- Build a project — Apply what you learned by building something real
- Explore related topics — Check out other tutorials in the same category
- Join the community — Discuss with other learners and share your progress
Remember: every expert was once a beginner. Keep coding!
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro