12월 21, 2025
30 분 읽기

주니어 클라우드 엔지니어 AWS 면접 질문: 완벽 가이드

interview
career-advice
job-search
entry-level
주니어 클라우드 엔지니어 AWS 면접 질문: 완벽 가이드
MB

Milad Bonakdar

작성자

EC2, S3, VPC, IAM 및 핵심 클라우드 개념을 다루는 종합적인 면접 질문을 통해 주니어 클라우드 엔지니어 직무에 필요한 필수 AWS 기본 사항을 마스터하세요.


소개

AWS(Amazon Web Services)는 컴퓨팅, 스토리지, 네트워킹 등을 위한 200개 이상의 서비스를 제공하는 선도적인 클라우드 플랫폼입니다. 주니어 클라우드 엔지니어로서 클라우드 인프라를 구축하고 관리하려면 핵심 AWS 서비스 및 클라우드 개념에 대한 기본적인 지식이 필요합니다.

이 가이드에서는 EC2, S3, VPC, IAM 및 기본적인 클라우드 개념에 중점을 둔 주니어 AWS 클라우드 엔지니어를 위한 필수 면접 질문을 다룹니다.


AWS EC2 (Elastic Compute Cloud)

1. AWS EC2란 무엇이며 주요 이점은 무엇입니까?

답변: **EC2 (Elastic Compute Cloud)**는 클라우드에서 크기 조정이 가능한 가상 서버를 제공합니다.

주요 이점:

  • 탄력성: 수요에 따라 확장/축소
  • 사용한 만큼 지불: 사용한 만큼만 지불
  • 다양성: 다양한 워크로드를 위한 다양한 인스턴스 유형
  • 글로벌: 전 세계 여러 지역에 배포
  • 통합: 다른 AWS 서비스와 원활하게 작동

일반적인 사용 사례:

  • 웹 호스팅
  • 애플리케이션 서버
  • 개발/테스트 환경
  • 배치 처리
  • 고성능 컴퓨팅

빈도: 매우 흔함 난이도: 쉬움


2. EC2 인스턴스 중지와 종료의 차이점을 설명하십시오.

답변:

인스턴스 중지:

  • 인스턴스가 종료되지만 삭제되지는 않음
  • EBS 루트 볼륨이 유지됨
  • EBS 스토리지에 대한 요금이 부과됨
  • 동일한 구성으로 나중에 다시 시작할 수 있음
  • 탄력적 IP가 연결된 상태로 유지됨
  • 인스턴스 ID는 동일하게 유지됨

인스턴스 종료:

  • 인스턴스가 영구적으로 삭제됨
  • EBS 루트 볼륨이 삭제됨 (별도로 구성하지 않은 경우)
  • 종료 후에는 요금이 부과되지 않음
  • 다시 시작할 수 없음
  • 탄력적 IP 연결이 해제됨
  • 인스턴스 ID를 재사용할 수 없음
# AWS CLI 예제

# 인스턴스 중지
aws ec2 stop-instances --instance-ids i-1234567890abcdef0

# 중지된 인스턴스 시작
aws ec2 start-instances --instance-ids i-1234567890abcdef0

# 인스턴스 종료
aws ec2 terminate-instances --instance-ids i-1234567890abcdef0

빈도: 매우 흔함 난이도: 쉬움


AWS S3 (Simple Storage Service)

3. Amazon S3란 무엇이며 다양한 스토리지 클래스는 무엇입니까?

답변: S3는 어디서든 원하는 양의 데이터를 저장하고 검색할 수 있는 객체 스토리지입니다.

스토리지 클래스:

클래스사용 사례가용성비용
S3 Standard자주 액세스하는 데이터99.99%가장 높음
S3 Intelligent-Tiering알 수 없거나 변경되는 액세스 패턴99.9%자동 최적화
S3 Standard-IA드물게 액세스하는 데이터99.9%더 낮음
S3 One Zone-IA드물게 액세스, 중요하지 않은 데이터99.5%가장 낮은 IA
S3 Glacier Instant아카이브, 즉시 검색99.9%매우 낮음
S3 Glacier Flexible아카이브, 몇 분-몇 시간 내 검색99.99%매우 낮음
S3 Glacier Deep Archive장기 아카이브, 12시간 내 검색99.99%가장 낮음
# S3 버킷 생성
aws s3 mb s3://my-bucket-name

# 파일 업로드
aws s3 cp myfile.txt s3://my-bucket-name/

# 객체 목록 표시
aws s3 ls s3://my-bucket-name/

# 파일 다운로드
aws s3 cp s3://my-bucket-name/myfile.txt ./

빈도: 매우 흔함 난이도: 쉬움-중간


AWS VPC (Virtual Private Cloud)

4. AWS VPC란 무엇이며 주요 구성 요소는 무엇입니까?

답변: VPC는 AWS 리소스를 시작하는 논리적으로 격리된 가상 네트워크입니다.

주요 구성 요소:

Loading diagram...

구성 요소:

  1. 서브넷: VPC IP 범위의 세그먼트

    • 퍼블릭: 인터넷 게이트웨이로 연결되는 경로가 있음
    • 프라이빗: 직접적인 인터넷 액세스가 없음
  2. 인터넷 게이트웨이: 인터넷 액세스 활성화

  3. NAT 게이트웨이: 프라이빗 서브넷 인터넷 액세스 허용 (아웃바운드 전용)

  4. 라우팅 테이블: 트래픽 라우팅 제어

  5. 보안 그룹: 인스턴스 수준 방화벽 (상태 저장)

  6. 네트워크 ACL: 서브넷 수준 방화벽 (상태 비저장)

빈도: 매우 흔함 난이도: 중간


5. 보안 그룹과 네트워크 ACL의 차이점은 무엇입니까?

답변:

기능보안 그룹네트워크 ACL
수준인스턴스서브넷
상태상태 저장상태 비저장
규칙허용만허용 및 거부
반환 트래픽자동명시적으로 허용해야 함
적용선택적 (인스턴스별)서브넷의 모든 인스턴스
규칙 평가모든 규칙순서대로 규칙

예시:

# 보안 그룹 생성
aws ec2 create-security-group \
  --group-name web-sg \
  --description "웹 서버 보안 그룹" \
  --vpc-id vpc-1234567890abcdef0

# 인바운드 규칙 추가 (HTTP 허용)
aws ec2 authorize-security-group-ingress \
  --group-id sg-0123456789abcdef0 \
  --protocol tcp \
  --port 80 \
  --cidr 0.0.0.0/0

# 인바운드 규칙 추가 (특정 IP에서 SSH 허용)
aws ec2 authorize-security-group-ingress \
  --group-id sg-0123456789abcdef0 \
  --protocol tcp \
  --port 22 \
  --cidr 203.0.113.0/24

빈도: 매우 흔함 난이도: 중간


AWS IAM (Identity and Access Management)

6. IAM 사용자, 그룹 및 역할을 설명하십시오.

답변: IAM은 AWS 리소스에 대한 액세스를 제어합니다.

IAM 사용자:

  • 자격 증명이 있는 개별 ID
  • 장기 자격 증명 (암호, 액세스 키)
  • 사람 또는 애플리케이션에 사용

IAM 그룹:

  • 사용자 모음
  • 그룹에 정책 연결
  • 사용자는 그룹 권한을 상속

IAM 역할:

  • 임시 자격 증명
  • 사용자, 애플리케이션 또는 서비스에서 가정
  • 장기 자격 증명이 없음
  • EC2 인스턴스, Lambda 함수, 교차 계정 액세스에 사용
// IAM 정책 예제 (S3 읽기 전용)
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::my-bucket",
        "arn:aws:s3:::my-bucket/*"
      ]
    }
  ]
}

모범 사례:

  • EC2 인스턴스에 역할 사용 (액세스 키 아님)
  • 최소 권한 원칙 준수
  • 권한 있는 사용자에 대해 MFA 활성화
  • 자격 증명을 정기적으로 교체
  • 권한 관리에 그룹 사용

빈도: 매우 흔함 난이도: 중간


AWS 핵심 개념

7. AWS 리전과 가용 영역이란 무엇입니까?

답변:

AWS 리전:

  • 지리적 위치 (예: us-east-1, eu-west-1)
  • 여러 가용 영역 포함
  • 다른 리전과 격리됨
  • 지연 시간, 규정 준수, 비용에 따라 선택

가용 영역 (AZ):

  • 리전 내에 있는 하나 이상의 데이터 센터
  • 다른 AZ의 오류로부터 격리됨
  • 낮은 지연 시간의 네트워킹으로 연결됨
  • 고가용성을 위해 여러 AZ에 배포
Loading diagram...

고가용성 예제:

# 여러 AZ에 인스턴스 시작
aws ec2 run-instances \
  --image-id ami-0abcdef1234567890 \
  --instance-type t2.micro \
  --subnet-id subnet-1a \
  --count 1

aws ec2 run-instances \
  --image-id ami-0abcdef1234567890 \
  --instance-type t2.micro \
  --subnet-id subnet-1b \
  --count 1

빈도: 매우 흔함 난이도: 쉬움


8. AMI (Amazon Machine Image)란 무엇입니까?

답변: AMI는 EC2 인스턴스를 만들기 위한 템플릿입니다.

포함:

  • 운영 체제
  • 애플리케이션 서버
  • 애플리케이션
  • 구성 설정

유형:

  • AWS 제공: Amazon Linux, Ubuntu, Windows
  • 마켓플레이스: 타사 AMI
  • 사용자 지정: 사용자 고유의 AMI

사용자 지정 AMI 생성:

# 실행 중인 인스턴스에서 AMI 생성
aws ec2 create-image \
  --instance-id i-1234567890abcdef0 \
  --name "My-Web-Server-AMI" \
  --description "Apache가 구성된 웹 서버"

# AMI에서 인스턴스 시작
aws ec2 run-instances \
  --image-id ami-0abcdef1234567890 \
  --instance-type t2.micro \
  --key-name my-key-pair

사용 사례:

  • 표준화된 배포
  • 백업 및 복구
  • Auto Scaling
  • 다중 리전 배포

빈도: 흔함 난이도: 쉬움-중간


AWS 스토리지

9. EBS란 무엇이며 다양한 볼륨 유형은 무엇입니까?

답변: **EBS (Elastic Block Store)**는 EC2 인스턴스를 위한 영구 블록 스토리지를 제공합니다.

볼륨 유형:

유형사용 사례성능비용
gp3 (범용 SSD)대부분의 워크로드3,000-16,000 IOPS가장 낮은 SSD
gp2 (범용 SSD)레거시, 일반 사용최대 16,000 IOPS낮음
io2/io1 (프로비저닝된 IOPS)데이터베이스, 중요 앱최대 64,000 IOPS가장 높음
st1 (처리량 최적화 HDD)빅 데이터, 데이터 웨어하우스높은 처리량낮음
sc1 (콜드 HDD)드물게 액세스가장 낮은 비용가장 낮음

EBS 생성 및 연결:

# EBS 볼륨 생성
aws ec2 create-volume \
  --availability-zone us-east-1a \
  --size 100 \
  --volume-type gp3 \
  --iops 3000 \
  --throughput 125

# 인스턴스에 연결
aws ec2 attach-volume \
  --volume-id vol-1234567890abcdef0 \
  --instance-id i-1234567890abcdef0 \
  --device /dev/sdf

# 포맷 및 마운트 (인스턴스에서)
sudo mkfs -t ext4 /dev/sdf
sudo mkdir /data
sudo mount /dev/sdf /data

# 영구적으로 만들기 (/etc/fstab에 추가)
echo "/dev/sdf /data ext4 defaults,nofail 0 2" | sudo tee -a /etc/fstab

EBS 스냅샷:

# 스냅샷 생성
aws ec2 create-snapshot \
  --volume-id vol-1234567890abcdef0 \
  --description "업그레이드 전 백업"

# 스냅샷에서 복원
aws ec2 create-volume \
  --snapshot-id snap-1234567890abcdef0 \
  --availability-zone us-east-1a \
  --volume-type gp3

# 스냅샷을 다른 리전에 복사
aws ec2 copy-snapshot \
  --source-region us-east-1 \
  --source-snapshot-id snap-1234567890abcdef0 \
  --destination-region us-west-2

주요 기능:

  • 영구적: 데이터는 인스턴스 종료 후에도 유지됨
  • 스냅샷: S3에 대한 특정 시점 백업
  • 암호화: 저장 및 전송 중
  • 크기 조정 가능: 가동 중지 시간 없이 크기 증가
  • 다중 연결: io2 볼륨은 여러 인스턴스에 연결 가능

모범 사례:

  • 대부분의 워크로드에 gp3 사용 (더 나은 가격/성능)
  • 기본적으로 암호화 활성화
  • 백업을 위한 정기적인 스냅샷
  • 비용 절감을 위해 사용하지 않는 볼륨 삭제

빈도: 매우 흔함 난이도: 쉬움-중간


10. S3 버킷 정책을 설명하고 IAM 정책과 어떻게 다른지 설명하십시오.

답변: 둘 다 S3에 대한 액세스를 제어하지만 작동 방식이 다릅니다.

IAM 정책:

  • 사용자, 그룹 또는 역할에 연결됨
  • ID가 수행할 수 있는 작업 제어
  • IAM에서 중앙 집중식으로 관리

S3 버킷 정책:

  • S3 버킷에 연결됨
  • 특정 버킷에 대한 액세스 제어
  • 교차 계정 액세스 권한 부여 가능
  • IP 주소로 제한 가능

IAM 정책 예제:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::my-bucket/*"
    }
  ]
}

S3 버킷 정책 예제:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicReadGetObject",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::my-public-bucket/*"
    },
    {
      "Sid": "RestrictByIP",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::my-bucket",
        "arn:aws:s3:::my-bucket/*"
      ],
      "Condition": {
        "NotIpAddress": {
          "aws:SourceIp": "203.0.113.0/24"
        }
      }
    }
  ]
}

버킷 정책 적용:

# 정책 파일 생성 (policy.json)
# 그런 다음 적용
aws s3api put-bucket-policy \
  --bucket my-bucket \
  --policy file://policy.json

# 현재 정책 보기
aws s3api get-bucket-policy \
  --bucket my-bucket

# 정책 삭제
aws s3api delete-bucket-policy \
  --bucket my-bucket

일반적인 사용 사례:

1. 퍼블릭 웹사이트 호스팅:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::my-website/*"
    }
  ]
}

2. 교차 계정 액세스:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:root"
      },
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::shared-bucket",
        "arn:aws:s3:::shared-bucket/*"
      ]
    }
  ]
}

3. 암호화 강제 적용:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::my-bucket/*",
      "Condition": {
        "StringNotEquals": {
          "s3:x-amz-server-side-encryption": "AES256"
        }
      }
    }
  ]
}

사용 시기:

  • IAM 정책: 사용자/애플리케이션이 수행할 수 있는 작업 제어
  • 버킷 정책: 버킷에 액세스할 수 있는 사용자 제어 (외부 계정 포함)

빈도: 매우 흔함 난이도: 중간


모니터링 및 관리

11. CloudWatch란 무엇이며 모니터링에 어떻게 사용합니까?

답변: CloudWatch는 AWS의 모니터링 및 관찰 가능성 서비스입니다.

주요 구성 요소:

1. 지표:

  • 시간 경과에 따른 숫자 데이터 포인트
  • EC2: CPU, 네트워크, 디스크
  • RDS: 연결, IOPS
  • 사용자 지정 지표: 애플리케이션별
# EC2 CPU 지표 보기
aws cloudwatch get-metric-statistics \
  --namespace AWS/EC2 \
  --metric-name CPUUtilization \
  --dimensions Name=InstanceId,Value=i-1234567890abcdef0 \
  --start-time 2024-11-25T00:00:00Z \
  --end-time 2024-11-25T23:59:59Z \
  --period 3600 \
  --statistics Average,Maximum

# 사용자 지정 지표 게시
aws cloudwatch put-metric-data \
  --namespace MyApp \
  --metric-name PageLoadTime \
  --value 0.5 \
  --unit Seconds

2. 경보:

# 높은 CPU에 대한 경보 생성
aws cloudwatch put-metric-alarm \
  --alarm-name high-cpu-alarm \
  --alarm-description "CPU가 80%를 초과하면 경고" \
  --metric-name CPUUtilization \
  --namespace AWS/EC2 \
  --statistic Average \
  --period 300 \
  --threshold 80 \
  --comparison-operator GreaterThanThreshold \
  --evaluation-periods 2 \
  --dimensions Name=InstanceId,Value=i-1234567890abcdef0 \
  --alarm-actions arn:aws:sns:us-east-1:123456789012:my-topic

3. 로그:

# 로그 그룹 생성
aws logs create-log-group \
  --log-group-name /aws/application/myapp

# 로그 스트림 생성
aws logs create-log-stream \
  --log-group-name /aws/application/myapp \
  --log-stream-name instance-1

# 로그 이벤트 넣기
aws logs put-log-events \
  --log-group-name /aws/application/myapp \
  --log-stream-name instance-1 \
  --log-events \
    timestamp=1234567890000,message="애플리케이션 시작됨" \
    timestamp=1234567891000,message="요청 처리 중"

# 로그 쿼리
aws logs filter-log-events \
  --log-group-name /aws/application/myapp \
  --filter-pattern "ERROR" \
  --start-time 1234567890000

4. 대시보드:

# boto3로 대시보드 생성
import boto3
import json

cloudwatch = boto3.client('cloudwatch')

dashboard_body = {
    "widgets": [
        {
            "type": "metric",
            "properties": {
                "metrics": [
                    ["AWS/EC2", "CPUUtilization", {"stat": "Average"}]
                ],
                "period": 300,
                "stat": "Average",
                "region": "us-east-1",
                "title": "EC2 CPU 사용률"
            }
        },
        {
            "type": "metric",
            "properties": {
                "metrics": [
                    ["AWS/RDS", "DatabaseConnections"]
                ],
                "period": 300,
                "stat": "Sum",
                "region": "us-east-1",
                "title": "RDS 연결"
            }
        }
    ]
}

cloudwatch.put_dashboard(
    DashboardName='MyAppDashboard',
    DashboardBody=json.dumps(dashboard_body)
)

일반적인 모니터링 시나리오:

EC2 인스턴스 모니터링:

# CPU, 네트워크, 디스크 지표는 자동입니다.
# 메모리의 경우 CloudWatch 에이전트가 필요합니다.

# CloudWatch 에이전트 설치
wget https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm
sudo rpm -U ./amazon-cloudwatch-agent.rpm

# 에이전트 구성 (구성 파일 생성)
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard

# 에이전트 시작
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
  -a fetch-config \
  -m ec2 \
  -s \
  -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json

애플리케이션 로그 모니터링:

# CloudWatch 로깅을 사용하는 Python 애플리케이션
import boto3
import logging
from datetime import datetime

class CloudWatchHandler(logging.Handler):
    def __init__(self, log_group, log_stream):
        super().__init__()
        self.client = boto3.client('logs')
        self.log_group = log_group
        self.log_stream = log_stream
        
    def emit(self, record):
        log_entry = self.format(record)
        self.client.put_log_events(
            logGroupName=self.log_group,
            logStreamName=self.log_stream,
            logEvents=[{
                'timestamp': int(datetime.now().timestamp() * 1000),
                'message': log_entry
            }]
        )

# 사용법
logger = logging.getLogger()
logger.addHandler(CloudWatchHandler('/aws/myapp', 'instance-1'))
logger.info("애플리케이션 시작됨")

모범 사례:

  • 중요한 지표에 대한 경보 설정
  • 로그를 구성하기 위해 로그 그룹 사용
  • 빠른 개요를 위해 대시보드 생성
  • 비용을 제어하기 위해 보존 정책 설정
  • 로그 분석을 위해 지표 필터 사용

빈도: 매우 흔함 난이도: 중간


결론

주니어 AWS 클라우드 엔지니어 면접을 준비하려면 핵심 서비스와 클라우드 개념을 이해해야 합니다. 다음 사항에 집중하십시오.

  1. EC2: 인스턴스 유형, 수명 주기, 보안
  2. S3: 스토리지 클래스, 버킷 정책, 버전 관리
  3. VPC: 네트워킹, 서브넷, 보안 그룹
  4. IAM: 사용자, 역할, 정책, 최소 권한
  5. 핵심 개념: 리전, AZ, AMI

AWS 콘솔 및 CLI를 사용하여 실무 경험을 쌓으십시오. 행운을 빕니다!

Newsletter subscription

실제로 효과가 있는 주간 커리어 팁

최신 인사이트를 받은 편지함으로 직접 받아보세요

Decorative doodle

다음 면접은 이력서 하나로 결정됩니다

몇 분 만에 전문적이고 최적화된 이력서를 만드세요. 디자인 기술은 필요 없습니다—입증된 결과만 있으면 됩니다.

내 이력서 만들기

이 게시물 공유

면접 콜백을 2배로 늘리세요

직무 설명에 맞게 이력서를 맞춤화하는 후보자는 2.5배 더 많은 면접을 받습니다. 우리 AI를 사용하여 모든 지원서에 대해 즉시 자동으로 이력서를 맞춤화하세요.