ตบสคริปต์จะหนี AWS Cli คำสั่งในคู่ขนานเพื่อลดเวลา

0

คำถาม

ขอโทษฉันยังใหม่กับตบบสคริปต์. ฉันต้องไปรอบๆ 10000 EC2 ย่างเช่นฉันต้องสร้างขึ้นมานี่ตบสคริปต์จะเปลี่ยนของฉัน EC2 ย่างเช่นประเภททั้งหมกตัวอย่างชื่อและประเภทจะถูกจัดเก็บไว้ในแฟ้ม รหัสกำลังทำงานแต่มันใช้เวลานานมากที่จะวิ่งผ่าตัวอย่างจากตัวอย่าง.

มีอันไหนต้องรู้ว่าถ้าฉันสามารถวิ่งไปได้ AWS Cli คำสั่งทั้งหมด EC2 ตัวอย่างในหนึ่งไปเหรอ? ขอบคุณ:)

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

คำตอบที่ดีที่สุด

1

Refactor รหัสของคุณให้ฟังก์ชันนั่นมันผ่านเส้นจากแฟ้มได้

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

วิ่ง GNU xargs หรือ GNU คู่ขนานสำหรับแต่ละบรรทัดของแฟ้มที่จะเรียกฟังก์ชันถูกส่งออกเป็น. ใช้ -P ตัวเลือกวิ่งฟังก์ชันใน paralell เห็นเอกสารอ้างอิง

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

เป็น@KamilCuk เล็งมาที่นี่คุณสามารถทำให้มันวิ่งอยู่ในคู่ขนาน. อย่างไรก็ตามถ้าคุณวิ่งสคริปต์นี้อยู่ในคู่ขนานคุณอาจจะจบลงด้วยการ throttled โดย EC2 งั้นทำให้แน่ใจว่าคุณรวมถึงบางอย่า backoff+ลองใหม่ตรรกะ/ความเคารพคขีดจำกัดที่ระบุไว้ที่นี่ https://docs.aws.amazon.com/AWSEC2/latest/APIReference/throttling.html

2021-11-25 06:11:48

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

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

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่