我正在尝试编写一个脚本,我们将备份AMI(亚马逊机器映像)&一旦完成&它的状态显示为“可用”,而不是通过电子邮件通知我们。
我已经完成了第一部分但是第二部分有问题,即连续检查图像何时可用&发邮件给我们要检查状态是否可用,我使用以下命令
/usr/bin/aws ec2 describe-images --image-ids=$AMI_ID --query "Images[*].{st:State}" | grep -e "available" | wc -l'
当AMI可用时,这将返回输出为1但是在创建循环时遇到问题,该循环连续运行上述命令以检查输出是否等于1。
请帮助弄清楚这个循环。
在某些情况下,PS IMAGE创建需要10到30分钟甚至更长时间。
答案 0 :(得分:0)
你可以使用无限循环
while true
do
if /usr/bin/aws ec2 describe-images --image-ids=$AMI_ID --query "Images[*].{st:State}" | grep -e "available" | wc -l'; then
break
fi
esac
done
答案 1 :(得分:0)
您也可以尝试以下方法:[根据需要更新sleepTime]
请注意,我已在您的命令中添加了标记--executable-users self
,以列出可供您使用的图像。
sleepTime=60 # sleepTime in seconds
while true ; do
count=$(aws ec2 describe-images --executable-users self --query "Images[*].{st:State}" | grep -e "available" | wc -l)
if [[ $count == 1 ]] ; then
echo "Image is ready... Add your emailing code here"
exit 0
fi
sleep $sleepTime;
printf "."
done