본문 바로가기

퍼블릭 클라우드

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

반응형

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
반응형