使用Python Boto删除Amazon EC2实例
我找到了一些示例代码,这些代码看起来可以用Python的boto库来创建一个Amazon EC2实例。不过,我实在搞不懂怎么写一个函数来删除这个实例。
有没有人对Python和boto了解得更多,可以告诉我应该怎么做才能删除这个实例呢?
# Delete EC2 instance
def delete_server():
print(_yellow("Deleting EC2 instance"))
# Create EC2 instance
def create_server():
print(_yellow("Creating EC2 instance"))
image = conn.get_all_images(ec2_amis)
reservation = image[0].run(1, 1, key_name=ec2_key_pair, security_groups=ec2_security,
instance_type=ec2_instancetype)
instance = reservation.instances[0]
conn.create_tags([instance.id], {"Name":config['INSTANCE_NAME_TAG']})
while instance.state == u'pending':
print(_yellow("Instance state: %s" % instance.state))
time.sleep(10)
instance.update()
print(_green("Instance state: %s" % instance.state))
print(_green("Public dns: %s" % instance.public_dns_name))
return instance.public_dns_name
2 个回答
0
你可能还想看看 starcluster。
这个工具可能比直接使用boto更适合你的需求,不过无论如何,它的代码都是用boto写的,并且提供了很多管理EC2实例和集群的示例,基本上是你可能想做的事情。
6
关于EC2的使用,可以参考boto文档。你已经有了你创建的实例ID,只需要用下面的代码来终止它:
def delete_server(instanceId):
conn.terminate_instances(instance_ids=[instanceId])
这里的conn
是你用来创建实例时用的那个全局连接变量。需要注意的是,boto
的调用需要一个实例ID的数组。terminate_instances
这个调用会返回一个被终止的实例ID列表。
另外,如果你之前设置了保护,防止通过API终止实例,那你需要先去掉这个保护。你的示例代码没有做这一步,所以你应该可以顺利地去掉保护。