我们有一些用于从互联网收集数据的爬虫。EC2 spot 对我们的应用来说是一个非常便宜的解决方案。
在我们的例子中,我们可以通过以下步骤设置爬虫:
- 从 AMAZON 快速启动模板启动 ami
- 安装依赖库
- 将爬虫应用程序发送到实例
- 为我们的爬虫设置启动器,让它在启动完成后工作
- 将实例设为 ami
但是当爬虫需要更新时,我们需要重复第 3 步。它会影响其他设置,例如 Auto Scaling 或其他 Spot 实例请求脚本中的“ami-id”。
'ami' 中的应用程序管理是一个部署问题,因此我们需要建议以使其尽可能简单。现在,还有另一种管理方式。我们使用源码管理工具,部署步骤是这样的:
- 3 来自源代码仓库的 git clone。
- 3.1 从源代码编译应用程序
- 3.2 移除之前的构建
- 3.3 安装最新版本
- 4 启动器总是在唤醒爬虫之前从最新版本重建爬虫。
新方法防止 ami-id 更改,但每次都必须检查源代码。最后,获取源代码需要更多时间(源代码每天都在增长)
您如何在 ami 上管理您的工件?我不确定总是从源代码构建是最佳选择。它只是克服了一些部署问题,但没有解决爬虫实例运行后的更新问题。