【问题标题】:Running a script on an AWS server在 AWS 服务器上运行脚本
【发布时间】:2012-05-12 03:06:18
【问题描述】:

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

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

我能想到的两个选项是:

  1. 我正在考虑破解 EMR 来执行此操作。 (我的脚本是针对空目录的映射器)
  2. 厨师 - 对于一个简单的脚本来说,这似乎太多了。

【问题讨论】:

  • 你更喜欢哪个 Linux 发行版?
  • 我一般选择ubuntu,但我对其他人持开放态度。

标签: amazon-ec2 amazon-web-services


【解决方案1】:

您可以在启动时使用官方 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 定期为您启动实例的方法。

这是我写的一篇文章,通过示例命令详细介绍了这种方法:

使用 Auto Scaling 定期运行 EC2 实例
http://alestic.com/2011/11/ec2-schedule-instance

一般方法是使用 Auto Scaling 定期使用您的用户数据脚本启动实例。您的作业将在完成后终止实例。他们的关键是暂停 Auto Scaling 重新启动已终止实例的正常愿望,这样您就无需为正在运行的实例付费,直到您的工作下次开始。

【讨论】:

  • 有趣。我可以将多个文件传递给实例吗?我想传递 3 个文件:A)Boostrap(安装所需的软件)B)配置 C)运行的脚本
  • 将它们组合成一个脚本。或者,传入一个用户数据脚本,该脚本从 S3 等安全位置下载并运行每个单独的脚本,并带有经过身份验证的 URL。
  • 不错的埃里克。这正是我所需要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-03
  • 2018-05-12
相关资源
最近更新 更多