0

我需要创建一个应用程序来执行以下操作:

  1. 通过消息系统接受请求(完成)
  2. 处理请求并确定作业需要什么脚本和什么类型的实例(完成)
  3. 启动 EC2 实例
  4. 上传自定义脚本(可能来自 github 或者可能是 S3 存储桶)
  5. 启动具有给定参数的脚本。

问题是执行步骤 3、4、5 的最有效方法是什么?不要理解我的错误,现在我正在用执行所有这些的脚本做同样的事情

  • 启动实例,
  • 使用 user_data 下载必要的依赖项
  • 比 SSH 进入实例并启动脚本

我的问题真的是:这是处理这类工作的唯一选择吗?或者可能有一种简单的方法可以做到这一点?我在看 OpsWork,我不确定这是否适合我。我知道我可以用它完成第 3 步和第 4 步,但剩下的呢?:

  • 使用给定参数启动脚本
  • 收到请求时触发 OpsWork 以启动实例

顺便说一句,我正在使用 Python,boto 与 AWS 服务进行通信。

4

2 回答 2

2

由于您已经在使用 AWS,这听起来像是 Amazon Simple Workflow Service ( http://aws.amazon.com/swf/ )的完美用例

从服务描述:

Amazon SWF 使用完全托管的 Web 服务取代了复杂的自定义编码工作流程解决方案和流程自动化软件。这消除了开发人员管理流程自动化的基础设施管道的需要,因此他们可以将精力集中在其应用程序的独特功能上。

它允许您定义任务工作流并让工作人员处理工作流中的任务。

boto对 SWF 有“level1”支持(低级 api):http: //boto.readthedocs.org/en/2.6.0/ref/swf.html

于 2013-07-17T01:41:59.770 回答
1

您可以使用刀引导。这可能是一种方法。您可以使用 AWS 开发工具包完成大部分工作

  1. 启动实例
  2. 添加公共 IP(如果不在 VPC 中)
  3. 等待重新上线
  4. 使用 Knife bootstrap 提供脚本,设置 chef-client,更新系统
  5. 然后使用厨师食谱设置您的机器
于 2013-07-17T05:02:29.820 回答