AWS DVA-C02 마스터 노트 시리즈 12편 완결편. AWS CLI 자격 증명 우선순위와 named profile·MFA, Boto3 등 SDK 사용 패턴, CloudFormation YAML 템플릿과 Stack·Drift, CDK로 코드처럼 인프라 작성, X-Ray·Cloud9 통합까지 — 시리즈 마무리에서 운영 도구 전반을 한 흐름으로.
이 글은 AWS DVA-C02 마스터 노트 시리즈의 마지막 편이자 열두 번째 편입니다. 1~11편이 AWS 서비스를 다뤘다면, 마지막은 그 서비스를 사용하는 도구 — CLI·SDK·CloudFormation·CDK.
AWS CLI
명령행에서 AWS 모든 서비스 호출.
자격 증명 우선순위
1. 명령행 옵션 (--profile, --region)
2. 환경 변수 (AWS_ACCESS_KEY_ID, ...)
3. ~/.aws/credentials 파일
4. ~/.aws/config 파일
5. EC2 인스턴스 프로파일 / ECS Task Role / Lambda 실행 역할
여기서 정말 중요한 시험 함정 — EC2/ECS/Lambda는 인스턴스 프로파일·역할 사용. 코드에 액세스 키 박지 X. 배포된 코드는 자동으로 5번 단계 사용.
Named Profile
여러 AWS 계정 관리.
# ~/.aws/credentials
[default]
aws_access_key_id = AKIA...
aws_secret_access_key = ...
[work]
aws_access_key_id = AKIB...
aws_secret_access_key = ...
[personal]
aws_access_key_id = AKIC...
aws_secret_access_key = ...
aws s3 ls --profile work
aws ec2 describe-instances --profile personal
MFA 사용
aws sts get-session-token \
--serial-number arn:aws:iam::123456789012:mfa/user \
--token-code 123456 \
--duration-seconds 3600
받은 임시 자격 증명을 환경 변수로 export.
--query·--output
JMESPath로 응답 필터링.
# JSON 출력 일부만
aws ec2 describe-instances \
--query 'Reservations[*].Instances[*].[InstanceId,State.Name]' \
--output table
# 단일 값
aws ec2 describe-instances \
--query 'Reservations[0].Instances[0].PrivateIpAddress' \
--output text
Pagination
대량 결과 자동 페이지 처리.
aws s3api list-objects-v2 --bucket my-bucket --max-items 100
AWS SDK
언어별 라이브러리 — Python(Boto3)·JavaScript·Java·Go·.NET 등.
Boto3 기본 패턴
import boto3
# 클라이언트 (low-level)
s3 = boto3.client('s3')
response = s3.list_buckets()
# 리소스 (high-level, 일부 서비스)
s3 = boto3.resource('s3')
for bucket in s3.buckets.all():
print(bucket.name)
Exponential Backoff
API 호출 실패 시 지수 백오프 재시도.
import boto3
from botocore.config import Config
config = Config(
retries={
'max_attempts': 10,
'mode': 'adaptive' # 'standard' or 'adaptive'
}
)
client = boto3.client('dynamodb', config=config)
여기서 시험 함정이 하나 있어요. 5xx·429 응답은 자동 재시도, 4xx는 안 함. Throttling(429)은 재시도 정상.
Lambda Layer로 SDK
표준 SDK는 Lambda 런타임에 포함되지만 신버전 필요 시 Layer로 업로드.
Region 설정
# 1. 명시
boto3.client('s3', region_name='us-east-1')
# 2. 세션
session = boto3.Session(region_name='ap-northeast-2')
# 3. 환경 변수
# AWS_DEFAULT_REGION=us-east-1
# 4. ~/.aws/config
CloudFormation — IaC
AWS 인프라를 YAML·JSON으로 정의.
템플릿 구조
AWSTemplateFormatVersion: '2010-09-09'
Description: 'My Web App'
Parameters:
InstanceType:
Type: String
Default: t2.micro
AllowedValues: [t2.micro, t2.small]
Resources:
MyEC2:
Type: AWS::EC2::Instance
Properties:
InstanceType: !Ref InstanceType
ImageId: ami-12345
MyBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: !Sub '${AWS::AccountId}-my-app-${AWS::Region}'
Outputs:
BucketName:
Description: 'S3 Bucket Name'
Value: !Ref MyBucket
Export:
Name: MyBucketName
핵심 함수 (Intrinsic Functions)
| 함수 | 용도 |
|---|---|
!Ref |
다른 리소스·파라미터 참조 |
!GetAtt |
리소스 속성 참조 |
!Sub |
문자열 치환 |
!Join |
문자열 결합 |
!FindInMap |
Mappings 조회 |
!ImportValue |
다른 Stack의 Export 가져옴 |
Stack — 배포 단위
aws cloudformation create-stack \
--stack-name my-app \
--template-body file://template.yaml \
--parameters ParameterKey=InstanceType,ParameterValue=t2.small
Change Set
배포 전 변경 사항 미리 확인.
aws cloudformation create-change-set \
--stack-name my-app \
--change-set-name my-changes \
--template-body file://template.yaml
aws cloudformation describe-change-set \
--stack-name my-app \
--change-set-name my-changes
여기서 정말 중요한 시험 함정 — 운영에선 Change Set 검토 후 배포 권장. 직접 update-stack은 위험.
Drift Detection
Stack의 실제 상태와 템플릿 차이 감지.
aws cloudformation detect-stack-drift --stack-name my-app
콘솔에서 직접 변경한 리소스 = drift. IaC 표준 위반.
Nested Stack
Stack 안에 Stack — 모듈화·재사용.
Stack Sets
여러 계정·리전에 동시 배포.
Helper Scripts (cfn-init)
EC2 부팅 시 자동 설정.
Resources:
MyEC2:
Type: AWS::EC2::Instance
Metadata:
AWS::CloudFormation::Init:
config:
packages:
yum:
httpd: []
services:
sysvinit:
httpd:
enabled: true
ensureRunning: true
Properties:
UserData: !Base64 |
#!/bin/bash
/opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource MyEC2
여기서 시험 함정이 하나 있어요. cfn-init 으로 EC2 자동 설정. UserData 보다 선언적·재사용 가능.
CDK — Cloud Development Kit
코드(TypeScript·Python·Java·.NET)로 인프라 작성. CloudFormation 자동 생성.
Python 예시
from aws_cdk import (
aws_lambda as lambda_,
aws_apigateway as apigw,
Stack,
)
from constructs import Construct
class MyStack(Stack):
def __init__(self, scope: Construct, construct_id: str, **kwargs):
super().__init__(scope, construct_id, **kwargs)
# Lambda 함수
my_function = lambda_.Function(
self, "MyFunction",
runtime=lambda_.Runtime.PYTHON_3_11,
handler="app.handler",
code=lambda_.Code.from_asset("lambda")
)
# API Gateway
api = apigw.LambdaRestApi(
self, "MyApi",
handler=my_function
)
CDK CLI
| 명령 | 용도 |
|---|---|
cdk init |
프로젝트 생성 |
cdk synth |
CloudFormation 템플릿 생성 |
cdk deploy |
배포 |
cdk diff |
변경 사항 |
cdk destroy |
삭제 |
Construct 계층
| 레벨 | 설명 |
|---|---|
| L1 (Cfn*) | CloudFormation 1:1 매핑 |
| L2 (대부분) | 합리적 기본값·헬퍼 |
| L3 (Pattern) | 다중 리소스 조합 |
여기서 정말 중요한 시험 함정 — CDK는 결국 CloudFormation으로 변환 됩니다. 디버깅 시 CFN 콘솔에서 확인. CDK는 작성 도구·CFN은 실행 엔진.
CloudFormation vs CDK vs SAM
| 도구 | 작성 | 자리 |
|---|---|---|
| CloudFormation | YAML/JSON | 모든 AWS 인프라 |
| CDK | 코드 (TS·Python·Java) | 복잡한 인프라·재사용 |
| SAM | YAML (CFN 확장) | 서버리스 (Lambda·API Gateway) |
| Terraform | HCL | 멀티 클라우드 (AWS 외) |
7편(서버리스)에서 SAM, 12편 마지막에서 CDK·CFN — 이 셋이 IaC의 AWS 표준.
Cloud9
브라우저 기반 IDE. 협업 개발·AWS 콘솔 통합.
git clone → Cloud9 IDE에서 편집 → AWS 자격 증명 자동 → 즉시 배포
Systems Manager Session Manager
SSH·RDP 없이 EC2 접속.
aws ssm start-session --target i-1234567890abcdef0
장점:
- 포트 22 안 열어도 됨
- IAM 권한으로 통제
- 모든 세션 CloudTrail 기록
CodeWhisperer / Q Developer
AI 코드 자동 완성 (GitHub Copilot 비슷). VS Code·IntelliJ 플러그인.
시험 직전 한 번 더 — 자주 헷갈리는 함정 모음
여기까지가 12편의 핵심입니다. 시험 직전 또는 실무에서 헷갈릴 때 다시 펼쳐 볼 수 있게 압축 노트로 마무리할게요.
- AWS CLI 자격 증명 우선순위 — 명령행 → 환경 변수 → credentials → config → 인스턴스 프로파일
- EC2/ECS/Lambda는 인스턴스 프로파일·역할 사용 (코드에 키 박기 X)
- Named Profile = 여러 계정 관리 (
--profile work) - MFA =
aws sts get-session-token --query(JMESPath) +--output(table/text/json)- Pagination — 대량 결과 자동 처리
- SDK = 언어별 (Python=Boto3)
- 클라이언트(low-level) vs 리소스(high-level)
- Exponential Backoff = 5xx·429 자동 재시도, 4xx는 X
- Region 설정 — 명시 / 세션 / 환경 변수 / config
- CloudFormation = YAML/JSON IaC
- 핵심 함수 —
!Ref/!GetAtt/!Sub/!Join/!FindInMap/!ImportValue - Change Set — 배포 전 변경 사항 미리 확인
- Drift Detection — 콘솔 변경 감지
- Nested Stack = 모듈화 / Stack Sets = 멀티 계정·리전
cfn-init= EC2 부팅 자동 설정 (UserData보다 선언적)- CDK = 코드 (TS·Python) → CFN 자동 생성
- L1 (Cfn*) / L2 (기본) / L3 (Pattern, 다중 리소스)
cdk synth / deploy / diff / destroy- 결국 CFN 변환 — CFN 콘솔에서 디버깅
- CFN vs CDK vs SAM — YAML / 코드 / 서버리스 YAML
- Terraform = 멀티 클라우드
- Cloud9 = 브라우저 IDE
- Session Manager = SSH 없이 EC2 접속
- CloudTrail 기록 + IAM 통제
- CodeWhisperer = AI 자동 완성
시리즈 마무리 — 12편 전체 요약
여기까지 오신 분이 있다면 진심으로 축하드립니다. 시리즈 전체에서 잡아 둔 핵심을 마지막으로 정리합니다.
- 1편 — IAM — 사용자·그룹·역할, 정책 평가, STS, Cognito
- 2편 — 컴퓨팅 — EC2 구매 옵션, Lambda 한도, ELB, ASG, Beanstalk
- 3편 — 스토리지 — S3 클래스 7종, 암호화 4종, Pre-signed URL, EBS, EFS
- 4편 — 데이터베이스 — RDS Read Replica vs Multi-AZ, Aurora 6복사본, DynamoDB
- 5편 — 네트워킹 — VPC, SG vs NACL, CloudFront, API Gateway, Route 53
- 6편 — 메시징 — SQS Visibility Timeout, SNS Fan-out, Kinesis, EventBridge
- 7편 — 서버리스 — Lambda 동시성, SAM, Step Functions, AppSync
- 8편 — CI/CD — Code* 4종, 배포 전략 (In-Place·Blue/Green·Canary)
- 9편 — 모니터링 — CloudWatch, X-Ray, CloudTrail
- 10편 — 보안·암호화 — KMS, SSM, Secrets Manager, Encryption SDK
- 11편 — 컨테이너 — ECS, Task vs Execution Role, ECR, EKS
- 12편 — 개발자 도구 (현재 글) — CLI, SDK, CloudFormation, CDK
DVA-C02 시험 130분·65문항·합격선 720점. 시험 도메인 비중 — 개발 32% / 보안 26% / 배포 24% / 문제 해결 18%.
이 12편이 시험 범위 거의 전부를 다룹니다. 응시 전 마지막 점검:
- ✅ Hands-on 1~2주 (실제 콘솔·CLI 실습)
- ✅ Practice Exam 풀이 (시험 문체·시간 감각)
- ✅ 시나리오 기반 사고 — "키워드 → 서비스 매핑"
- ✅ IAM 정책 평가 룰 (명시적 Deny 우선)
- ✅ 단순 암기보다 서비스 조합·트레이드오프 이해
다음 단계 — DVA-C02 합격 후 SAA-C03 (솔루션 아키텍트) 또는 SOA-C02 (운영). 멀티 자격증으로 본인 영역 확장.
시리즈 다른 편
- 1편 — IAM·STS·Cognito
- 2편 — 컴퓨팅 (EC2·Lambda·Beanstalk)
- 3편 — 스토리지 (S3·EBS·EFS)
- 4편 — 데이터베이스 (RDS·Aurora·DynamoDB)
- 5편 — 네트워킹 (VPC·CloudFront·API Gateway)
- 6편 — 메시징 (SQS·SNS·Kinesis)
- 7편 — 서버리스 (Lambda·SAM·Step Functions)
- 8편 — CI/CD (CodePipeline·CodeBuild·CodeDeploy)
- 9편 — 모니터링 (CloudWatch·X-Ray·CloudTrail)
- 10편 — 보안·암호화 (KMS·SSM·Secrets Manager)
- 11편 — 컨테이너 (ECS·ECR·Fargate·EKS)
- 12편 — 개발자 도구 (현재 글, 시리즈 완결)
공식 문서: AWS CLI Reference / CloudFormation User Guide / AWS CDK Developer Guide / DVA-C02 시험 가이드 에서 추가 자료를 볼 수 있어요.
DVA-C02는 한 번에 정복되는 시험이 아니에요. 매번 새 시나리오·새 함정과 만나며 평생 다듬어 가는 영역입니다. 시리즈 끝까지 읽어 주셔서 감사합니다. 시험 합격을 응원합니다!