如何使用 shell 腳本建立 AMI(排除 VPC 內所有執行個體的所有附加磁碟區)

如何使用 shell 腳本建立 AMI(排除 VPC 內所有執行個體的所有附加磁碟區)

我編寫了腳本來從 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 描述映像 --image-ids ami-xxxx |grep "/dev" | awk '{印$2}'

輸出 :

/dev/sda1

這是我們找到附加磁碟區清單並將其傳遞給「ec2-create-image --block-device-mapping /dev/sdh=none」的方法

相關內容