Script Bash per eseguire AWS Cli comando in parallelo per ridurre il tempo di

0

Domanda

scusate io sono ancora nuovo a bash scripting. Ho circa 10000 istanza EC2, ho creato questo script bash per cambiare la mia istanza EC2 tipo, tutti istanza nome e tipo sono memorizzati in un file. il codice funziona, ma si sta prendendo così tanto tempo per eseguire attraverso istanza per istanza.

non hanno sa se sono in grado di eseguire AWS comando Cli su tutti istanza EC2 in un colpo solo ? Grazie :)

#!/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

Migliore risposta

1

Il refactoring del codice di una funzione che è passata una riga dal file.

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

GNU xargs o GNU parallelo per ogni riga del file che chiama la funzione esportata. Utilizzare -P opzione di eseguire la funzione in paralell, vedere la documentazione.

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

Come @KamilCuk sottolineato qui, si può facilmente fare questo eseguire in parallelo. Tuttavia, Se si esegue questo script in parallelo, si potrebbe finire strozzato da EC2, in modo da assicurarsi di includere alcuni di backoff + logica di tentativi / a rispettare i limiti specificati qui https://docs.aws.amazon.com/AWSEC2/latest/APIReference/throttling.html

2021-11-25 06:11:48

In altre lingue

Questa pagina è in altre lingue

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