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

时间:2017-08-01 23:51:10

标签: amazon-web-services amazon-ec2 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()

我应该检查是否

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

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

1 个答案:

答案 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'])

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