1

我找到了一些示例代码,这些代码显然能够使用 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
4

2 回答 2

6

EC2的boto 文档涵盖了这一需求。您拥有创建的实例 ID,只需使用以下命令终止它:

def delete_server(instanceId):
    conn.terminate_instances(instance_ids=[instanceId])

conn你用来创建实例的同一个全局连接变量在哪里。请注意,该boto调用采用一组实例 ID。该terminate_instances调用将返回已终止的实例 ID 列表。

请注意,如果您保护实例免于 API 终止,则必须首先删除该保护。您的示例代码没有这样做,因此您应该可以轻松删除它。

于 2013-02-19T14:07:53.837 回答
0

您可能还想看看starcluster

它可能比原始 boto 更好地满足您的目的,但无论如何代码都使用 boto 并提供了您在管理 EC2 实例和集群方面可能想要做的大多数事情的示例。

于 2013-02-20T15:56:27.843 回答