Tan Kim

AWS (Amazon Web Services)

세계 최대 클라우드 플랫폼.

핵심 서비스

컴퓨팅

서비스 설명
EC2 가상 서버 (인스턴스)
Lambda 서버리스 함수 실행
ECS 컨테이너 오케스트레이션
EKS 관리형 Kubernetes
Fargate 서버리스 컨테이너 (EC2 없이)

스토리지

서비스 설명
S3 오브젝트 스토리지
EBS EC2 블록 스토리지
EFS 공유 파일 시스템
Glacier 저비용 아카이브 스토리지

데이터베이스

서비스 설명
RDS 관리형 관계형 DB (MySQL, PostgreSQL 등)
Aurora AWS 최적화 MySQL/PostgreSQL 호환
DynamoDB 서버리스 NoSQL
ElastiCache 관리형 Redis/Memcached

네트워크

서비스 설명
VPC 가상 사설 네트워크
Route 53 DNS + 헬스체크
CloudFront CDN
ALB/NLB 로드 밸런서
API Gateway REST/WebSocket API 관리

기타

서비스 설명
IAM 권한 및 접근 관리
SQS 메시지 큐
SNS 알림 서비스
CloudWatch 모니터링 & 로그
ECR 컨테이너 이미지 레지스트리
Secrets Manager 시크릿 관리

IAM

User     — 실제 사람
Group    — User의 묶음 (권한을 그룹에 부여)
Role     — 서비스/리소스에 부여하는 권한 (EC2, Lambda 등)
Policy   — 권한 정의 (JSON)
// 최소 권한 원칙 (Least Privilege)
{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Action": ["s3:GetObject", "s3:PutObject"],
    "Resource": "arn:aws:s3:::my-bucket/*"
  }]
}

S3

# AWS CLI
aws s3 ls                          # 버킷 목록
aws s3 ls s3://my-bucket           # 파일 목록
aws s3 cp file.txt s3://my-bucket/ # 업로드
aws s3 cp s3://my-bucket/file.txt ./ # 다운로드
aws s3 sync ./dist s3://my-bucket  # 디렉토리 동기화
aws s3 rm s3://my-bucket/file.txt  # 삭제
 
# 정적 웹 호스팅
aws s3 website s3://my-bucket \
  --index-document index.html \
  --error-document error.html

EC2

# 인스턴스 접속
ssh -i key.pem ec2-user@<public-ip>
 
# 인스턴스 타입 (주요)
t3.micro 무료 티어, 개발용
t3.small 소규모 서비스
t3.medium 중규모
c5.large CPU 집약적
r5.large 메모리 집약적

VPC 기본 구조

VPC (10.0.0.0/16)
├── Public Subnet  (10.0.1.0/24)  ← 인터넷 게이트웨이 연결
│   └── EC2, ALB, NAT Gateway
└── Private Subnet (10.0.2.0/24)  ← 인터넷 직접 접근 불가
    └── RDS, ElastiCache, 앱 서버

Lambda

export const handler = async (event: any) => {
  console.log('Event:', JSON.stringify(event))
 
  return {
    statusCode: 200,
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ message: 'Hello!' }),
  }
}
# 배포
aws lambda update-function-code \
  --function-name my-function \
  --zip-file fileb://function.zip

메모

이 글에 대해 물어보기