2012-05-11 69 views
6

我有一个脚本,每天需要运行一次,需要大量内存。我想在专门的亚马逊盒子上运行它。在AWS服务器上运行脚本

是否有一些自动化的方式来构建一个盒子,下载所有必需的软件(如红宝石),然后运行我的脚本。脚本运行后,我想关闭该框。

我能想到的两个选项是:

  1. 我想黑客EMR做到这一点。 (我的脚本是映射到空目录的映射器)
  2. 厨师 - 对于一个简单的脚本,这看起来太多了。
+0

你更喜欢什么Linux发行版? –

+1

我通常选择Ubuntu,但我对其他人开放。 – Tihom

回答

9

您可以在启动时使用官方的Ubuntu AMI,官方的Amazon Linux AMI以及任何其他支持用户数据脚本概念的AMI来完成一个新的EC2实例。

创建一个脚本(bash中,Perl,Python和

  1. 等等),以#开始!
  2. 运行EC2实例时,将此脚本作为用户数据传递。
  3. 该脚本将在第一次启动时自动以root身份运行。

这里就是我介绍了一个用户数据脚本的概念的文章:

自动化EC2实例安装与用户数据的脚本
http://alestic.com/2009/06/ec2-user-data-scripts

您的用户数据脚本可以安装所需的软件,进行配置,安装工作脚本,并设置每天运行一次工作脚本的cron作业。

增强:

如果安装脚本并不需要很长的时间来运行(例如,一个小时或几下),那么你甚至不必运行单个专用实例24小时天。您可以改为使用一种让AWS可以定期为您启动实例的方法。

这里有一个文章,我写了提供这种方法与样本命令的详细信息:

一个重复计划运行的EC2实例与自动缩放
http://alestic.com/2011/11/ec2-schedule-instance

的一般方法是使用Auto Scaling可定期使用用户数据脚本启动实例。您的工作完成后将终止实例。他们的关键是暂停Auto Scaling正常的重新启动终止实例的愿望,以便您在下次开始工作时不需要为正在运行的实例付费。

+0

有趣。我可以将多个文件传递给实例吗?我想传递3个文件:A)Boostrap(安装所需的软件)B)配置C)运行的脚本 – Tihom

+0

将它们合并成一个脚本。或者,传入一个用户数据脚本,该脚本从S3等安全的地方下载并运行每个单独的脚本,并通过身份验证的URL。 –

+1

不错的Eric。这正是我需要的。 –

相关问题