본문 바로가기

퍼블릭 클라우드

Shell 스크립트로 Amazon Machine Image(AMI) 생성하기

728x90
반응형

Shell 스크립트로 Amazon Machine Image(AMI) 생성하기

1. 실행 중인 EC2 인스턴스 조회

AMI 생성을 위해 먼저 대상 인스턴스를 확인합니다.

 

instance-search.sh 스크립트

#!/bin/bash

aws ec2 describe-instances \
--filters "Name=instance-state-name,Values=running" \
--query 'Reservations[*].Instances[*].{A_Name:Tags[?Key==`Name`]|[0].Value,B_Instance:InstanceId,C_Type:InstanceType,D_PrivateIP:PrivateIpAddress,E_PublicIP:PublicIpAddress,F_Status:State.Name,G_CreatedDate:LaunchTime}' \
--output table
./instance-search.sh

>> output <<

instance

728x90

2. AMI 생성 스크립트

createami.sh 스크립트

#!/bin/bash

# 기본값 설정
INSTANCE_ID=${1:-i-1111}
IMAGE_NAME="prod-web-ami"
CURRENT_DATE=$(date +%Y%m%d)
IMAGE_VERSION=${2:-v1.1.1}
IMAGE_DESCRIPTION="operating(production) web server ami"

# 도움말
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
  echo
  echo "Usage: $0 [INSTANCE_ID] [IMAGE_VERSION]"
  echo
  echo "Example:"
  echo "  $0 i-0abc1234 v1.2.0"
  echo
  exit 0
fi

# AMI 생성
aws ec2 create-image \
  --instance-id "$INSTANCE_ID" \
  --name "${IMAGE_NAME}-${CURRENT_DATE}-${IMAGE_VERSION}" \
  --description "$IMAGE_DESCRIPTION" \
  --tag-specifications \
    'ResourceType=image,Tags=[{Key=Name,Value=prod-web-ami}]' \
    'ResourceType=snapshot,Tags=[{Key=Name,Value=prod-web-ami}]' \
  --no-reboot
  • 주요 옵션 설명
    • --no-reboot : 인스턴스를 재부팅하지 않고 AMI 생성
    • --tag-specifications : AMI 및 Snapshot에 태그 자동 적용

스크립트 실행

chmod +x createami.sh
./createami.sh i-0abc1234 v1.2.0

3. AMI 및 스냅샷 확인

AWS 콘솔에서 다음 경로로 확인할 수 있습니다.

 

AMI 확인

  • EC2 > 이미지 > AMI

스냅샷 확인

  • Elastic Block Store > 스냅샷

 

 

728x90
반응형