Script Bash para executar AWS comando Cli em paralelo para reduzir o tempo de

0

Pergunta

desculpe, eu ainda sou novo para bash scripting. Eu tenho em torno de 10000 instância do EC2, eu criei este script bash para alterar minha instância de EC2 tipo, todos os nome de instância e tipo são armazenados em um arquivo. o código está funcionando, mas ele está levando muito tempo para ser executado através instância por instância.

faz qualquer um ter sabe se eu posso executar o AWS comando Cli em todas as instância do EC2 em um ir ? Obrigado :)

#!/bin/bash

my_file='test.txt'

declare -a instanceID
declare -a fmo #Future Instance Size

while IFS=, read -r COL1 COL2; do

   instanceID+=("$COL1")
   fmo+=("$COL2")   

done <"$my_file"

len=${#instanceID[@]}

for (( i=0; i < $len; i++)); do

   vm_instance_id="${instanceID[$i]}"
   vm_type="${fmo[$i]}"

   echo Stoping $vm_instance_id
   aws ec2 stop-instances --instance-ids $vm_instance_id

   echo " Waiting for $vm_instance_id state to be STOP "
   aws ec2 wait instance-stopped --instance-ids $vm_instance_id


   echo Resizing $vm_instance_id to $vm_type 
   aws ec2 modify-instance-attribute --instance-id $vm_instance_id --instance-type $vm_type
   


   echo Starting $vm_instance_id 
   aws ec2 start-instances --instance-ids $vm_instance_id
    

done
automation aws-automation aws-cli bash
2021-11-23 09:52:30
2

Melhor resposta

1

Refatorar seu código para uma função que é passado de uma linha do arquivo.

work() {
   IFS=, read -r instanceID fmo <<<"$1"
   stuff "$instanceID" "$fmo"
}

Executar o GNU xargs ou GNU paralelo para cada linha do arquivo que chama a função exportada. Utilização -P opção de executar a função em paralelo, consulte a documentação.

export -f work
xargs -P0 -t bash -c 'work "$@"' -- <"$my_file"
2021-11-23 10:03:16
0

Como o @KamilCuk apontado aqui, você pode facilmente fazer isso funcionar em paralelo. No entanto, Se você executar esse script em paralelo, você pode acabar ficando limitadas pelo EC2, então certifique-se de incluir alguns backoff + lógica de repetição / respeitar os limites especificados aqui https://docs.aws.amazon.com/AWSEC2/latest/APIReference/throttling.html

2021-11-25 06:11:48

Em outros idiomas

Esta página está em outros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................