쉘 스크립트를 사용하여 VPC 내의 모든 인스턴스에 대해 연결된 모든 볼륨을 제외하는 AMI를 생성하는 방법

쉘 스크립트를 사용하여 VPC 내의 모든 인스턴스에 대해 연결된 모든 볼륨을 제외하는 AMI를 생성하는 방법

VPC에서 인스턴스 ID를 찾고 각 인스턴스 ID의 AMI를 생성하는 스크립트를 작성했습니다.

#!/bin/bash
#Script to Automate AMI backup

echo "----------------------------------\n   `date`   \n----------------------------------"

aws ec2 describe-instances --filters Name=vpc-id,Values=vpc-1c927479 |   awk '{ print $8 }' | sort -n   | grep  "i-" > /tmp/instanceid.txt


echo "Starting the Daily AMI creation: "

#To create AMI from instance-id 

for i in $(cat /tmp/instanceid.txt); do
        echo "Creating AMI for Instance id $i ......."

echo "instance-`date +%d%b%y`-$i" > /tmp/aminame.txt

aws ec2 create-image --instance-id $i --name "`cat /tmp/aminame.txt`" --description "This is created by ami-backup.sh" --no-reboot | grep -ir ami | awk '{print $4}' > /tmp/amiID.txt

echo  "AMI Name is: `cat /tmp/aminame.txt`\n"

echo done 

done

하지만 각 볼륨에 연결된 볼륨을 제외하고 AMI를 생성하고 싶습니다!

ec2-create-image --block-device-mapping /dev/sdh=none

이렇게 하면 연결된 볼륨 없이 ami가 생성되지만 /dev/sdh는 인스턴스마다 다르므로 이 부분을 어떻게 자동화합니까? 어떤 힌트라도!

답변1

명령: $ aws ec2 explain-images --image-ids ami-xxxx |grep "/dev" | awk '{인쇄 $2}'

출력 :

/dev/sda1

이것이 연결된 볼륨 목록을 찾아 "ec2-create-image --block-device-mapping /dev/sdh=none"에 전달하는 방법입니다.

관련 정보