AWS DVA 항해기 - EC2 인스턴스 스토리지 - AMI

에옹이다아옹·2025년 11월 9일
0

AWS-DVA

목록 보기
10/21

❓ AMI(Amazon Machine Image)

=> 커스터마이징된 인스턴스로부터 만들어진 이미지(템플릿)
=> OS/소프트웨어/설정을 캡처한 부팅 이미지
=> 부팅에 필요한 디스크 스냅샷(루트 볼륨), 블록 디바이스 매핑, 권한 정보를 정적인 묶음으로 가진 설계도

AWS에서 생성한 AMI를 사용하거나 사용자 지정 AMI를 만들 수 있다

자체적으로 AMI를 생성하면 부팅과 구성에 시간이 단축됨

-> EC2 인스턴스에 설치하고자 하는 모든 소프트웨어가 AMI를 통해서 사전에 패키징 되기 때문

AMI ID는 해당 리전에서만 유효. 다른 리전에서 쓰려면 AMI 복사 필요(새 ID 생성)

AMI 유형

  • Amazon 제공

  • 내 프라이빗

    • AMI를 만든 소유 계정만 볼 수 있고, 그 계정만 인스턴스를 띄울 수 있음
    • 복사: 같은 계정 내 리전 간 복사 가능(복사하면 새 AMI ID)
    • 요금: 스냅샷/스토리지는 소유 계정이 부담
  • 공유(계정 대상)

    • 특정 다른 AWS 계정 ID에 ‘런치 권한’을 부여해 그 계정이 이 AMI로 인스턴스를 띄울 수 있게 한 상태

    • 주의(암호화 시 3종 세트)

      • AMI 런치 권한 공유
      • (암호화된) 스냅샷 공유
      • KMS 키 사용 권한 부여
        이 셋이 모두 되어야 상대 계정에서 실제로 사용/복사 가능
    • 복사/소유권: 공유받은 계정이 자기 계정으로 AMI를 ‘복사’하면, 그 복사본은 공유받은 계정 소유가 됨(권장 패턴)

    • 요금: 원본 보관 비용은 원본 소유 계정이 부담(공유만 했을 뿐). 상대가 복사하면 복사본 비용은 상대 계정 부담

    • 용도: 멀티계정(Prod/Dev/보안계정) 간 표준 이미지 배포, 파트너/자회사 제공

  • 퍼블릭
    • 누구나 검색/사용 가능(전체 공개)
    • 조건: AMI와 해당 스냅샷도 퍼블릭이어야 함
    • 제한: 암호화된 AMI는 퍼블릭 불가, Marketplace AMI도 퍼블릭 전환 불가
    • 용도: 커뮤니티 배포(예: 교육용 베이스 이미지), 오픈 샘플
  • Marketplace

    • 다른 사람이 생성한 AMI(잠재적으로 팔 수 있는?)

표로 한눈에 정리

구분볼 수 있는 대상누가 런치?스냅샷/키 요구복사전형적 용도
내 프라이빗소유 계정만소유 계정기본(추가 없음)가능(리전 간)사내 표준/운영용
공유(계정 대상)지정한 계정소유 + 지정 계정(암호화 시) 스냅샷+KMS 권한 공유상대가 자기 계정으로 복사 권장멀티계정 배포/파트너 제공
퍼블릭모두누구나스냅샷도 퍼블릭, 암호화 불가사용자가 자기 계정으로 복사 가능공개 배포/학습용

AMI Process

  1. EC2를 시작하고 사용자 지정으로 바꾼다(customize)
  2. 인스턴스를 중지시켜 데이터 무결성을 확보(선택 사항)
    콘솔에서 No reboot 체크를 해제(재부팅 허용)하면 파일시스템 일관성이 더 좋음
    윈도우는 Sysprep, 리눅스는 서비스 중지/fsfreeze/sync 같은 방법도 좋음
  3. AMI 구축 => AMI 생성 시 블록 디바이스 매핑에 포함된 모든 EBS 볼륨의 스냅샷이 같이 만들어짐
  4. 생성된 해당 AMI를 사용해 인스턴스를 실행

AMI 생성해보기(내 프라이빗 ver.)

먼저 인스턴스를 새로 생성하고

생성된 인스턴스 => 우클릭 => Image and Templates => Create Image 클릭🖱️❇️

생성된 AMI로 인스턴스 생성 가능

My AMIs에 보면 직전에 내가 생성했던 AMI가 목록에 나타나는 것을 확인할 수 있다

User Data에 생성한 AMI에 이미 설치 명령어가 다 입력되어 있어서

yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable httpd

새로 생성한 인스턴스에는 아래 항목만 입력해주고 AMI를 연결했다

# Use this for your user data (script from top to bottom)
# install httpd (Linux 2 version)
#!/bin/bash
echo "<h1>Hello World from $(hostname -f)</h1>" > /var/www/html/index.html

Public IP 주소로 접근하면 페이지가 정상 출력되는 것을 확인할 수 있다!

profile
숲(구조)을 보는 개발자

0개의 댓글