boto3 改变 AWS ec2 实例状态

boto3 changing AWS ec2 instance state

根据 Boto3 docs and this diagram

EC2 实例有 6 种状态:

'pending'|'running'|'shutting-down'|'terminated'|'stopping'|'stopped'

我想知道如何以编程方式将状态设置为这些状态之一。

我有一些代码可以查看我的 ec2 实例中每个实例的所有状态。

ec2 = boto3.resource("ec2", region_name="us-west-2")
vpc = ec2.Vpc("vpc-123456")
for instance in vpc.instances.all():
    for tag in instance.tags:
        print(instance.state["Name"])

我得到了

的输出
running
running
running
running
...
...

我想知道是否可以将这些状态更改为 pendingshutting-down

类似 instance.set("stopping") 的内容。我知道也许如果我将一个实例设置为 stopping 的状态,我将在下次检查该实例时获得 stopped 状态。

您不能直接更改 EC2 实例状态值。状态会根据您对 launch/start/stop/terminate 个实例执行的操作而变化。查看以下 Boto3 EC2 client 方法:

run_instances()
start_instances()
stop_instances()
terminate_instances()

您可以使用 Instance.stop()Instance.reboot()Insance.terminate() 资源方法。