繁体   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