使用 boto3 检查终止 AWS EC2 实例是否成功的正确方法是什么?

nos*_*nos 6 amazon-ec2 amazon-web-services boto3

我使用以下代码来终止 aws EC2 实例。检查终止是否成功的正确方法是什么?

s = boto3.Session(profile_name='dev')
ec2 = s.resource('ec2', region_name='us-east-1')
ins = ec2.Instance(instance_id)
res = ins.terminate()
Run Code Online (Sandbox Code Playgroud)

我应该检查是否

res['TerminatingInstances'][0]['CurrentState']['Name']=='shutting-down'

还是忽略res并再次描述实例以进行检查?

Joh*_*ein 7

最好的办法是使用EC2.Waiter.InstanceTerminated服务员

EC2.Client.describe_instances()每 15 秒轮询一次,直到达到成功状态。检查失败 40 次后返回错误。

import boto3

client = boto3.client('ec2')
waiter = client.get_waiter('instance_terminated')

client.terminate_instances(InstanceIds=['i-0974da9ff5318c395'])
waiter.wait(InstanceIds=['i-0974da9ff5318c395'])
Run Code Online (Sandbox Code Playgroud)

一旦实例处于终止状态,程序就退出。