Условие ожидания и цикла в сценарии Bash

#bash #amazon-web-services #shell #terminal #aws-cli

#bash #amazon-web-services #оболочка #терминал #aws-cli

Вопрос:

У меня есть сценарий командной строки AWS, который будет использовать AMI экземпляра, создавать конфигурацию запуска, обновлять группу автоматического масштабирования с помощью последней конфигурации запуска и выполнять операцию обновления экземпляра.

Я не хочу выполнять операцию обновления экземпляра, если AMI не находится в «доступном состоянии». Итак, я подумываю о добавлении условия, которое проверяется каждые 10 секунд.

Вот мой существующий файл сценария:

 ...
#Create AMI
IMAGE=`aws ec2 create-image --instance-id ${INST_ID} --name NEW-IMAGE-${TIME} --no-reboot --output text`
echo "Create Image of instance ${INST_ID}"

#Create new launch Configuration
aws autoscaling create-launch-configuration --launch-configuration-name ${NEW_LC} --image-id ${IMAGE} --instance-type t2.micro --key forclient --associate-public-ip-address --security-groups sg-01be135cb14a00960
echo "Create new Launch Configuration ${NEW_LC}"

#Update Auto Scaling Group to use new Launch Configuration
aws autoscaling update-auto-scaling-group --auto-scaling-group-name ${ASG_NAME} --launch-configuration-name ${NEW_LC}
echo "New Launch Configuration is updated in ASG ${NEW_LC}"

aws autoscaling start-instance-refresh --auto-scaling-group-name ${ASG_NAME}
 

Я не хочу запускать команду ‘start-instance-refresh’ до тех пор, пока «create-image» не перейдет в состояние «доступно».

Какие изменения мне нужно внести в этот файл сценария, чтобы это произошло?

Ответ №1:

Вы можете использовать изображение-доступный официант после создания образа:

 aws ec2 wait image-available --image-ids ${IMAGE}