当前位置:  开发笔记 > 编程语言 > 正文

自动关闭并启动Amazon EC2实例

如何解决《自动关闭并启动AmazonEC2实例》经验,为你挑选了5个好方法。

我可以使用Amazon API自动启动和终止我的Amazon实例吗?你能描述一下如何做到这一点吗?理想情况下,我需要启动实例并每天以指定的时间间隔停止实例.



1> Nakedible..:

为了防止有人在这个旧问题上遇到麻烦,现在你可以通过向自动缩放组添加一个时间表来实现同样的目的:在某些时间将自动缩放组中的实例数量增加到1并在之后将其减少到0 .

由于这个答案得到了很多观点,我想链接到一个非常有用的指南:使用Auto Scaling在循环计划上运行EC2实例


我尝试了链接中描述的方法,它确实在教程指定的时间启动/停止实例.但是,我注意到在AWS Web控制台中,当这个方法启动一个实例时,它没有开始使用一个键(这样你可以使用它),而且它似乎也没有与我相同的东西安装在我用作测试的微实例上(我不是云专家,但我认为这意味着这个新开的实例没有连接到EBS?)有没有办法自动启动和按时间表停止*同一*实例?
这里最好的awnser.

2> 小智..:

您可以尝试直接使用Amazon EC2 API工具.实际上只需要两个命令:ec2-start-instances和ec2-stop-instances.确保正确配置了EC2_HOME,AWS_CREDENTIAL_FILE,EC2_CERT,EC2_PRIVATE_KEY等环境变量,并且所有AWS凭证,证书和私钥文件都位于正确的位置 - 您可以在AWS EC2 API工具文档中找到更多信息.

您可以先手动测试命令,然后在一切正常时,在Windows上配置Unix crontab或Scheduled Tasks.您可以在下面找到Linux/etc/crontab文件的示例(不要忘记,上面提到的所有环境变量都需要为"您的帐户"用户提供.

/etc/crontab
0 8     * * *   your-account ec2-start-instances 
0 16    * * *   your-account ec2-stop-instances 
# Your instance will be started at 8am and shutdown at 4pm.

我是BitNami Cloud项目的开发人员,我们将AWS工具(包括我提到的工具)打包在一个您可能想要尝试的免费,易于使用的安装程序中: BitNami CloudTools包堆栈


为此仍然需要另一个实例.因为关闭不是问题,而是启动.关闭后,Crone或任何东西都不会在死机中运行.

3> gareth_bowle..:

我建议您查看EC2入门指南,该指南向您展示如何使用EC2命令行工具执行所需操作.您可以轻松地将此脚本编写到cron作业(在Linux/UNIX上)或Windows上的预定作业,以在给定时间调用启动和停止命令.

如果要从自己的代码中执行此操作,可以使用SOAP或REST API; 请参阅开发者指南了解详细信息



4> Suman..:

我使用Boto库在Python中编写代码来执行此操作.您可以根据自己的需要进行调整.确保将其作为cron作业的一部分运行,然后您将能够在cron作业运行期间启动或关闭所需数量的实例.

#!/usr/bin/python
#
# Auto-start and stop EC2 instances
#
import boto, datetime, sys
from time import gmtime, strftime, sleep

# AWS credentials
aws_key = "AKIAxxx"
aws_secret = "abcd"

# The instances that we want to auto-start/stop
instances = [
    # You can have tuples in this format:
    # [instance-id, name/description, startHour, stopHour, ipAddress]
    ["i-12345678", "Description", "00", "12", "1.2.3.4"]
]

# --------------------------------------------

# If its the weekend, then quit
# If you don't care about the weekend, remove these three 
# lines of code below.
weekday = datetime.datetime.today().weekday()
if (weekday == 5) or (weekday == 6):
    sys.exit()

# Connect to EC2
conn = boto.connect_ec2(aws_key, aws_secret)

# Get current hour
hh = strftime("%H", gmtime())

# For each instance
for (instance, description, start, stop, ip) in instances:
    # If this is the hour of starting it...
    if (hh == start):
        # Start the instance
        conn.start_instances(instance_ids=[instance])
        # Sleep for a few seconds to ensure starting
        sleep(10)
        # Associate the Elastic IP with instance
        if ip:
            conn.associate_address(instance, ip)
    # If this is the hour of stopping it...
    if (hh == stop):
        # Stop the instance
        conn.stop_instances(instance_ids=[instance])



5> AntonyM..:

我工作的公司让客户经常询问这个,所以我们在这里写了一个免费的EC2调度应用程序:

http://blog.simple-help.com/2012/03/free-ec2-scheduler/

它适用于Windows和Mac,允许您创建多个每日/每周/每月计划,并允许您使用匹配筛选器轻松包含大量实例,或包括您将来添加的实例.

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有