bash - AWS 客户端 : how to start all machines found by tag

标签 bash amazon-web-services

我可以列出所有机器:
aws ec2 describe-instances --filters "Name=tag:Env,Values=my_super_tag"--query 'Reservations[].Instances[].[InstanceId]' --输出文本
然后我希望启动所有找到的机器 - 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

奇怪因为有 echo
aws ec2 describe-instances --filters "Name=tag:Env,Values=spt1"--query 'Reservations[].Instances[].[InstanceId]' --输出文本 | 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`

关于bash - AWS 客户端 : how to start all machines found by tag,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43580472/

相关文章:

linux - 在 bash 中循环遍历不相关的数字范围时使用文件中的行

mysql - 是否有 cli 命令可将数据库添加到现有 AWS/RDS 实例

amazon-web-services - Terraform - 资源重复多次

amazon-web-services - 使用cloudformation在aws上安装jupyter服务器

amazon-web-services - 设置 EKS 集群后出现错误 "An error occurred (AccessDenied) when calling the AssumeRole operation: Access denied"

linux - 计算语法错误

Bash for循环如何解决带空格的变量?

file - 如何在 bash 文件中提供密码以在终端中执行

python - 有没有一种在保留章节元数据的同时下载视频的方法?

amazon-ec2 - Amazon EC2 和 EBS 磁盘空间问题