This guide covers the foundational AWS building blocks and concepts you need before diving into specific services.
| Term | Meaning |
|---|
| Account | The top-level billing and isolation boundary in AWS |
| Region | A geographic area containing multiple isolated data centers |
| Availability Zone (AZ) | One or more discrete data centers within a region |
| Edge Location | CloudFront CDN endpoints closer to end users |
| Resource | Any AWS entity you create (EC2 instance, S3 bucket, etc.) |
| ARN | Amazon Resource Name — unique identifier for any AWS resource |
| Tag | Key-value pair for labeling and cost allocation |
AWS uses a flat but hierarchical model via AWS Organizations:
- Management account — Root account that owns the organization
- Organizational Units (OUs) — Group accounts for policy application
- Member accounts — Individual billing/isolation units (equivalent to Azure Subscriptions)
- Service Control Policies (SCPs) — Guard-rails applied at OU or account level
In Azure terms: AWS Account ≈ Azure Subscription, AWS Organization ≈ Azure Management Group.
AWS Identity and Access Management (IAM) is the central identity system:
- IAM Users — Human identities with long-term credentials
- IAM Groups — Collections of users sharing the same policies
- IAM Roles — Assumed by services, applications, or federated users (no permanent credentials)
- IAM Policies — JSON documents defining Allow/Deny permissions
- Principle of least privilege — Only grant what is strictly necessary
- VPC (Virtual Private Cloud) — Your own private network in AWS
- Subnets — Public (internet-facing) or private (internal only)
- Security Groups — Stateful firewall at the resource level
- Network ACLs — Stateless firewall at the subnet level
- Internet Gateway — Allows public internet access from a VPC
- NAT Gateway — Allows private subnets to reach the internet outbound only
| Service | Use Case |
|---|
| EC2 | Virtual machines — full control over OS |
| Lambda | Serverless functions — event-driven, pay per invocation |
| ECS | Docker containers managed by AWS |
| EKS | Managed Kubernetes |
| Fargate | Serverless containers (no server management) |
| Elastic Beanstalk | PaaS for deploying apps without managing infrastructure |
| Service | Type | Azure Equivalent |
|---|
| S3 | Object storage | Azure Blob Storage |
| EBS | Block storage (attached to EC2) | Azure Managed Disks |
| EFS | Shared file storage (NFS) | Azure Files |
| Glacier | Long-term archive | Azure Archive Storage |
| Service | Type | Azure Equivalent |
|---|
| RDS | Managed relational DB (MySQL, PostgreSQL, SQL Server) | Azure SQL Database |
| Aurora | High-performance MySQL/PostgreSQL compatible | Azure SQL Hyperscale |
| DynamoDB | NoSQL key-value and document | Azure Cosmos DB |
| ElastiCache | In-memory cache (Redis, Memcached) | Azure Cache for Redis |
| Redshift | Data warehouse | Azure Synapse Analytics |
- IAM — Identity and access control
- KMS — Key Management Service for encryption keys
- Secrets Manager — Store and rotate secrets (DB passwords, API keys)
- AWS Shield — DDoS protection (Standard is free)
- AWS WAF — Web Application Firewall
- AWS Config — Track resource configuration changes
- CloudTrail — Audit log of all API calls
- AWS Cost Explorer — Visualize and analyze spending
- AWS Budgets — Set cost or usage thresholds and alerts
- Savings Plans / Reserved Instances — Commit to usage for significant discounts
- Spot Instances — Use spare EC2 capacity at up to 90% discount
- Tags — Apply
Environment, Owner, CostCenter tags to track spend
| Tool | Description |
|---|
| CloudFormation | AWS-native IaC using JSON/YAML templates |
| AWS CDK | Define infrastructure in TypeScript, Python, Java, or C# |
| Terraform | Multi-cloud IaC, widely adopted |
| AWS SAM | Serverless Application Model — simplified Lambda/API deployments |
# https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html
# Enter: Access Key ID, Secret Access Key, Region, Output format
aws sts get-caller-identity
aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId,State.Name,InstanceType]' --output table