Установите желаемую емкость AutoScaleGroup, используя переменную из цикла - PullRequest
0 голосов
/ 14 января 2019

Я запускаю следующий скрипт, который получает имена стеков, отфильтрованные по имени Test.

Я могу вывести текущую емкость, максимальные и минимальные значения, я могу повторить название группы шкал, поскольку циклы по анг получают значения, но не могу установить желаемую емкость переменной $ group, я продолжаю получать нулевые значения, я пробовал несколько вариантов, но все возвращают нулевое значение.

*

Команда * 1005

read -p 'Enter Name Where Scaling Groups will be updated: "Default Stack" = ' -e -i 'Test' stackname \ 

scalegroups=($(aws autoscaling describe-auto-scaling-groups --query 'AutoScalingGroups[?contains(Tags[?Key==`aws:cloudformation:stack-name`].Value, `'$stackname'`)].AutoScalingGroupName')) \
echo "Total Stacks Found :" ${scalegroups[*]} \
for group in "${scalegroups[@]//,/}" \

do 
    currentcapacity=$(aws autoscaling describe-auto-scaling-groups --query 'AutoScalingGroups[?AutoScalingGroupName==`'$group'`].[DesiredCapacity]' --output text) \
    echo $group 
    aws autoscaling set-desired-capacity --auto-scaling-group-name $group --desired-capacity $((currentcapacity + 1)) --honor-cooldown \
    latestcapacity=$(aws autoscaling describe-auto-scaling-groups --query 'AutoScalingGroups[?AutoScalingGroupName==`'$group'`].[DesiredCapacity]' --output text) \
    echo "Latest Capacity = " $latestcapacity \
done 

Error

An error occurred (ValidationError) when calling the SetDesiredCapacity operation: AutoScalingGroup name not found - null

1 Ответ

0 голосов
/ 14 января 2019

Трудно сказать, потому что в вашем скрипте довольно много синтаксических ошибок, по крайней мере, настолько, насколько вы здесь вставили.

Я исправил скрипт так, чтобы он работал, как и предполагалось. Я изменил это на это:

echo -n 'Enter Name Where Scaling Groups will be updated: "Default Stack" = ' -e -i 'Test ' ; read stackname

scalegroups=($(aws autoscaling describe-auto-scaling-groups \
  --query 'AutoScalingGroups[?contains(Tags[?Key==`aws:cloudformation:stack-name`].Value, `'$stackname'`)].AutoScalingGroupName' \
  --output text))

echo "Total Stacks Found :" ${scalegroups[*]}

for group in "${scalegroups[@]//,/}"
do 
  echo "Processing group: $group"

  currentcapacity=$(aws autoscaling describe-auto-scaling-groups \
    --query 'AutoScalingGroups[?AutoScalingGroupName==`'$group'`].DesiredCapacity' \
    --output text)

  aws autoscaling set-desired-capacity \
    --auto-scaling-group-name $group \
    --desired-capacity $((currentcapacity + 1)) \
    --honor-cooldown

  latestcapacity=$(aws autoscaling describe-auto-scaling-groups \
    --query 'AutoScalingGroups[?AutoScalingGroupName==`'$group'`].DesiredCapacity' \
    --output text)

  echo "Latest Capacity = " $latestcapacity
done

Несколько баллов:

  • Я думаю, что ваша ошибка, вероятно, была в строке групп весов. Вы пропали без вести --output text.
  • Обратите внимание, я сделал его более читаемым, используя разрывы строк (символ \).
  • Я удалил лишнее принуждение DesiredCapacity к массиву [DesiredCapacity].
...