AWS CLI:如何启动通过标签找到的所有机器

pba*_*ski 5 bash amazon-web-services

我可以列出所有计算机:
aws ec2 describe-instances --filters "Name=tag:Env,Values=my_super_tag" --query 'Reservations[].Instances[].[InstanceId]' --output text
然后我希望启动所有找到的计算机-aws cli表达式允许吗?

解决方法是将下一个aws cli命令应用于接收到的输出(机器ID),但是在这里我也遇到了问题:

 $ 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
Run Code Online (Sandbox Code Playgroud)

奇怪,因为有了回声,
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
Run Code Online (Sandbox Code Playgroud)

Joh*_*ein 6

您可以将一个命令嵌入另一个命令,例如:

aws ec2 start-instances --instance-ids `ANOTHER-COMMAND`
Run Code Online (Sandbox Code Playgroud)

因此,请尝试以下操作:

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