我使用以下代码来终止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()
我应该检查是否
res['TerminatingInstances'][0]['CurrentState']['Name']=='shutting-down'
或者忽略res
并再次描述实例以进行检查?
答案 0 :(得分:3)
最好的方法是使用the EC2.Waiter.InstanceTerminated
waiter。
它每15秒轮询一次EC2.Client.describe_instances()
,直到达到成功状态。 40次检查失败后返回错误。
import boto3
client = boto3.client('ec2')
waiter = client.get_waiter('instance_terminated')
client.terminate_instances(InstanceIds=['i-0974da9ff5318c395'])
waiter.wait(InstanceIds=['i-0974da9ff5318c395'])
一旦实例处于终止状态,程序就会退出。