簡體   English   中英

AWS cli:如何啟動標記找到的所有計算機

[英]AWS cli: how to start all machines found by tag

我可以列出所有機器:
aws ec2 describe-instances --filters "Name=tag:Env,Values=my_super_tag" --query 'Reservations[].Instances[].[InstanceId]' --output text
然后我希望啟動所有找到的機器 - 是什么允許的aws cli表達式?

解決方法可以是為接收的輸出(機器ID)應用下一個aws cli命令,但在這里我也遇到了問題:

 $ aws ec2 describe-instances --filters "Name=tag:Env,Values=my_super_tag" --query 'Reservations[].Instances[].[InstanceId]' --output text\
  | xargs -L1 aws ec2 start-instances --instance-ids
' does not existd (InvalidInstanceID.NotFound) when calling the StartInstances operation: The instance ID 'i-12345677890
xargs: aws: exited with status 255; aborting

奇怪,因為有回聲
aws ec2 describe-instances --filters "Name=tag:Env,Values=spt1" --query 'Reservations[].Instances[].[InstanceId]' --output text | xargs -L 1 echo aws ec2 start-instances --instance-ids
我得到輸出(執行下面的一行按預期工作)

aws ec2 start-instances --instance-ids i-2123456789
aws ec2 start-instances --instance-ids i-3123456789
aws ec2 start-instances --instance-ids i-4123456789
aws ec2 start-instances --instance-ids i-5123456789

您可以在另一個命令中嵌入一個命令,例如:

aws ec2 start-instances --instance-ids `ANOTHER-COMMAND`

所以,試試這個:

aws ec2 start-instances --instance-ids `aws ec2 describe-instances --filters "Name=tag:Env,Values=my_super_tag" --query 'Reservations[].Instances[].InstanceId' --output text`

@John Rotenstein回答這個問題,但是由於AWS的限制和處理已經啟動了實例(關於這個鏈接的問題),最好添加到查詢中

"Name=instance-state-name,Values=stopping,stopped"

那么完整的查詢就會如此

aws ec2 start-instances --instance-ids `aws ec2 describe-instances --filters "Name=tag:Env,Values=my-super-tag" "Name=instance-state-name,Values=stopping,stopped" --query 'Reservations[].Instances[].InstanceId' --outpu t text`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM