AMI(Amazon Machine Image)

도은호·2025년 10월 7일
0

AWS SAA

목록 보기
11/46

AMI는 EC2 인스턴스의 템플릿(이미지)입니다. OS, 루트 디스크 스냅샷, 블록 디바이스 맵핑, 권한 등의 런치에 필요한 모든 메타데이터를 담고 있음


1) AMI가 담는 것

  • 루트 디스크 스냅샷: 보통 EBS 스냅샷(루트 볼륨 이미지)
  • 블록 디바이스 맵핑: 루트/추가 볼륨 구성(타입, 크기, IOPS 등)
  • 아키텍처: x86_64 / arm64 (예: Graviton=arm64)
  • 가상화 타입: HVM(표준, Nitro 기반) (PV는 레거시)
  • 런치 권한: 비공개(기본), 특정 계정 공유, 퍼블릭
  • 설명/태그/이미지 소유자/이미지 유형(Marketplace, 커스텀 등)

AMI ID는 리전 종속. 다른 리전에서 쓰려면 Copy AMI가 필요


2) 루트 디바이스 타입

  • EBS-backed (대부분)

    • 인스턴스 중지/시작 가능, 스냅샷 기반 백업/복원 쉬움
    • 표준 선택지
  • Instance Store-backed (레거시/특수)

    • 정지 불가(중지=데이터 소실), 종료 시 데이터 사라짐
    • 초고속 로컬 NVMe가 필요할 때 일부 활용

3) AMI 수명주기 & 기본 동작

  • 상태: pending → available → (optional) deprecated → deregistered
  • Deregister(등록 해제) 후에는 연결 스냅샷을 직접 삭제해야 비용이 멈춤.
  • Deprecation Date를 설정해 신규 런치를 막고, 교체를 유도할 수 있음

4) 만들기 / 복사 / 공유

만들기

  • 실행 중 인스턴스 → 이미지: 패치/설정 끝낸 인스턴스에서 스냅샷 만들어 골든 AMI 생성

    aws ec2 create-image \
      --instance-id i-0123456789abcdef0 \
      --name "golden-al2023-2025-10-07" \
      --description "Hardened AL2023 base" \
      --no-reboot
  • 스냅샷 → AMI 등록: register-image로 직접 등록도 가능

리전 간 복사

aws ec2 copy-image \
  --source-region ap-northeast-2 \
  --source-image-id ami-0abc... \
  --name "golden-al2023-copy-to-us-east-1" \
  --region us-east-1

암호화된 AMI는 대상 리전 KMS 키로 재암호화

공유(런치 권한)

aws ec2 modify-image-attribute \
  --image-id ami-0abc... \
  --launch-permission "Add=[{UserId=123456789012}]"
  • 암호화된 AMI 공유: AMI + 관련 스냅샷 공유, KMS 키 권한(키 정책/Grant)도 상대 계정에 부여해야 함
  • 퍼블릭으로도 가능(보안/라이선스 주의)
  • Marketplace AMI는 공유 제약이 많음(구독 필요)

5) 최신 AMI 자동 참조 (SSM 파라미터)

  • 최신 아마존 리눅스/윈도우 AMI는 SSM Parameter Store에서 안전하게 참조

    aws ssm get-parameters \
      --names /aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64 \
      --query 'Parameters[0].Value' --output text
  • 런치 템플릿/IaC에서 하드코딩된 AMI ID 대신 SSM 참조를 권장


6) 골든 AMI 파이프라인 (베스트 프랙티스)

  • EC2 Image Builder 또는 HashiCorp Packer

    1. 베이스 AMI 선택 → 2) 패치/하드닝/에이전트 설치 → 3) 검증(Test) → 4) 아티팩트 배포/공유
  • 장점: 일관성, 컴플라이언스, 취약점 패치 자동화

  • 패치 주기: 월간/주간 등 조직 정책에 맞춰 deprecate → 교체 롤아웃


7) 비용 관점

  • AMI 자체 비용은 없음, 하지만 연결된 EBS 스냅샷 저장비용 발생
  • 리전 간 Copy AMI스냅샷 복사 요금/전송 발생
  • Marketplace AMI소프트웨어 요금이 추가될 수 있음

8) 운영 팁 & 자주 하는 실수

  • 리전 종속: AMI ID는 리전마다 다름 → 멀티리전 배포는 Copy AMI 또는 SSM 파라미터 활용
  • 암호화 체인: 암호화 AMI를 공유/복사할 때 KMS 권한을 빼먹으면 런치 실패
  • 불용 스냅샷: AMI deregister 후 스냅샷을 지우지 않아 비용 누수
  • 아키텍처 불일치: Graviton 인스턴스에 x86_64 AMI 선택(또는 반대) → 런치 실패
  • 유저데이터 vs AMI: 자주 변하는 앱 구성은 User Data/워크플로우로 처리, OS/미들웨어는 AMI에 베이크(균형)

9) CloudFormation/Launch Template 예시

# CloudFormation: LaunchTemplate에서 AMI 참조(SSM)
Parameters:
  LatestAL2023Ami:
    Type: AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>
    Default: /aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64

Resources:
  LT:
    Type: AWS::EC2::LaunchTemplate
    Properties:
      LaunchTemplateData:
        ImageId: !Ref LatestAL2023Ami
        InstanceType: t3.medium
        BlockDeviceMappings:
          - DeviceName: /dev/xvda
            Ebs: { VolumeSize: 30, VolumeType: gp3 }

10) SAA 시험 포인트 체크

  • AMI는 리전 종속, 다른 리전은 Copy AMI 필요
  • EBS-backed가 표준(정지/시작 가능), Instance Store-backed는 정지 불가
  • 암호화 AMI 공유스냅샷 공유 + KMS 권한 부여 둘 다 필요
  • 골든 AMI 파이프라인: Image Builder/Packer
  • 최신 AMI 자동 참조: SSM Parameter Store
  • Deregister ≠ 스냅샷 삭제 (스냅샷은 별도 삭제)

11) 유용한 CLI 모음

# AMI 조회 (내 소유)
aws ec2 describe-images --owners self --query 'Images[*].{ID:ImageId,Name:Name}'

# AMI 공유 추가/제거
aws ec2 modify-image-attribute --image-id ami-0abc... \
  --launch-permission "Add=[{UserId=123456789012}]"

aws ec2 modify-image-attribute --image-id ami-0abc... \
  --launch-permission "Remove=[{UserId=123456789012}]"

# AMI 비활성화(Deprecation 설정)
aws ec2 enable-image-deprecation \
  --image-id ami-0abc... \
  --deprecate-at 2026-01-31T00:00:00Z

# AMI 등록 해제 & 스냅샷 정리
aws ec2 deregister-image --image-id ami-0abc...
aws ec2 delete-snapshot --snapshot-id snap-0123abcd...

12) 요약

  • AMI = EC2 템플릿(OS+디스크 맵핑+권한) / 리전 종속
  • 표준은 EBS-backed, 정지/시작·스냅샷 관리 용이
  • 공유/복사KMS/스냅샷 권한 챙기기
  • SSM Parameter로 최신 AMI 자동 참조
  • Image Builder/Packer골든 AMI 파이프라인 운영
profile
`•.¸¸.•´´¯`••._.• 🎀 𝒸𝓇𝒶𝓏𝓎 𝓅𝓈𝓎𝒸𝒽💞𝓅𝒶𝓉𝒽 🎀 •._.••`¯´´•.¸¸.•`

0개의 댓글