启动和停止EC2,然后使用bash在实例上启用/检查服务



我需要停止启动多个EC2实例,并在它们启动后运行几个命令,在同一个管理服务器上使用bash,而不需要ssh。

我知道如何启动和停止EC2实例,例如:

启动实例:

#! /bin/bash
aws ec2 start-instances --instance-ids i-1a1234

停止实例:

#! /bin/bash
aws ec2 stop-instances --instance-ids i-1a1234

我想好了如何通过运行列出所有EC2 ID

aws ec2 describe-instances --filters "Name=tag:Name,Values=Test: Instance 1" --query 'Reservations[].Instances[].[InstanceId] --output text

我的问题是:

  1. 如何停止/启动多个EC2实例
  2. 如何获取特定的EC2实例并运行命令来检查实例启动后启用的服务

我可能需要运行if条件来将id或标记名称与所需的EC2实例进行比较,然后运行shell命令?

我知道其中的逻辑,但请帮我了解剧本的细节。

您可以通过指定多个实例的ID:来启动/停止多个实例

aws ec2 start-instances --instance-ids i-1a1234 i-1a1235 i-1a1236

如果您想每次启动时都在实例上运行脚本,您可以将脚本放入:

/var/lib/cloud/scripts/per-boot/

这将使用cloud-init自动运行脚本,然后脚本可以执行任何您想要的检查/处理。

当实例上的程序完成处理时,它可以使用停止自己的实例

sudo shutdown now -h

有关更多详细信息,请参阅:当EC2实例完成任务时自动停止-DEV Community

或者,您可以使用AWS Systems Manager Run命令在实例上运行脚本。这是在已经运行的实例上运行作业的好方法。该命令甚至可以在多个实例上同时执行。

最新更新