【问题标题】:How to terminate multiple EC2 instances in AWS via CLI?如何通过 CLI 终止 AWS 中的多个 EC2 实例?
【发布时间】:2020-12-30 18:31:18
【问题描述】:

我正在寻找通过AWS CLI 终止多个EC2 实例。是的,可以通过执行以下命令来终止 EC2 实例。

语法aws ec2 terminate-instances --instance-ids <intance id> --profile <profile name>

示例aws ec2 terminate-instances --instance-ids <i-...> --profile xxx

但是我有很多需要终止的实例,因此我正在寻找一种解决方案,通过提供实例 ID 列表来终止一批 EC2 实例。我尝试了多个实例 ID,如下所示,但那些不工作。

  • aws ec2 terminate-instances --instance-ids ("instance-id1", "intance-id2") --profile xxx
  • aws ec2 terminate-instances --instance-ids ("instance-id1intance-id2") --profile xxx
  • aws ec2 terminate-instances --instance-ids (instance-id1,intance-id2) --profile xxx

如果有可能终止一批实例,请告诉我。

【问题讨论】:

  • aws ec2 terminate-instances --instance-ids "instance-id1" "instance-id2" / aws ec2 terminate-instances --instance-ids instance-id1 instance-id2
  • 这里的帮助很有用aws ec2 terminate-instances help

标签: amazon-web-services amazon-ec2 command-line-interface aws-cli


【解决方案1】:

我可以按照luk2302推荐的以下命令来实现这一点

aws ec2 terminate-instances --instance-ids instance-id1 instance-id2 --profile xxx

同样按照Alex Bailey 的建议,我们可以尝试使用 shell 脚本 (.sh) 或批处理 (.bat),这将使我们的工作更轻松。

【讨论】:

    【解决方案2】:

    我不会一次运行所有实例 ID,而是在 shell 脚本中创建一个循环来执行此操作。

    假设您在文本文件的单独行中拥有每个实例 ID,您可以执行以下操作:

    #!/usr/bin/env bash
    
    while read ins_id; do
      aws ec2 terminate-instances --instance-ids $ins_id --profile <profile name> || echo "error terminating ${ins_id}"
    done < instance_ids.txt
    

    这没有经过测试,而且我不擅长使用 shell 脚本,所以如果你尝试使用它,只需先尝试一两个实例,看看会发生什么。

    【讨论】:

    • 这增加了不必要的复杂性并创建了新的故障机制
    • 这在很大程度上取决于您运行它的方式和预期结果以及 AWS CLI 如何处理单个错误。例如,如果其中一个实例 ID 格式错误,AWS CLI 可能会崩溃。也许这没关系,也许不是。这是实现 OP 试图做的事情的一种方法,即终止一批 EC2 实例。
    • 此外,根据列表的大小,AWS CLI 可能会同时提供 1000 个实例中的 100 个。
    • 我同意这是一种方法,但我认为这不是一种好方法。文档很清楚,如果实例列表包含无效的 id,那么整个操作将失败,没有任何终止。此外,该列表最多可包含 1000 个实例,尽管他们确实建议拆分成更小的批次。如果这是经常发生的情况,我强烈推荐 terraform / cloudformation / 自动缩放组 / 托管的东西。
    • 我认为我们对用例的了解还不够,不能说这不是一个好方法。例如,如果 OP 想要一次性运行 100 个实例,并且不会再次完成并且不想因为一个实例 ID 格式错误而失败,该怎么办?仅仅因为某事不是你会做的方式,并不意味着它不是实现某事的“好”方式。就我个人而言,我不建议输入数百个实例 ID 或生成一个巨大的命令,但这是实现预期结果的同样有效的方法。
    猜你喜欢
    • 2017-06-23
    • 2013-07-05
    • 2022-11-18
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    • 2018-07-02
    相关资源
    最近更新 更多