Zamanı azaltmak için AWS Clı komutunu paralel olarak çalıştırmak üzere Bash Komut Dosyası

0

Soru

üzgünüm, bash senaryolarında hala yeniyim. Yaklaşık 10000 EC2 örneğim var, EC2 örnek türümü değiştirmek için bu bash betiğini oluşturdum, tüm örnek adı ve türü bir dosyada saklanır. kod çalışıyor, ancak örnek örnek üzerinden çalıştırmak çok uzun sürüyor.

tüm EC2 örneklerinde AWS Clı komutunu tek seferde çalıştırabileceğimi bilen var mı ? Teşekkür :)

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

En iyi cevabı

1

Kodunuzu dosyadan bir satır geçirilen bir işleve Refactor.

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

Dışa aktarılan işlevi çağıran her dosya satırı için GNU xargs veya GNU parallel komutunu çalıştırın. Kullanmak -P seçenek işlevi paralel olarak çalıştırın, belgelere bakın.

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

@Kamilcuk'un da belirttiği gibi, bu koşuyu paralel olarak kolayca yapabilirsiniz. Bununla birlikte, bu betiği paralel olarak çalıştırırsanız, EC2 tarafından kısılabilir, bu nedenle bazı geri tepme + yeniden deneme mantığı eklediğinizden / burada belirtilen sınırlara uyduğunuzdan emin olun https://docs.aws.amazon.com/AWSEC2/latest/APIReference/throttling.html

2021-11-25 06:11:48

Diğer dillerde

Bu sayfa diğer dillerde

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