在AWS中部署bot实例

时间:2018-04-27 22:30:53

标签: node.js amazon-web-services bots cloud9-ide cloud9

我没有使用AWS或机器人部署进行生产的经验,所以我正在寻找有关最佳实践的一些建议。

该项目是一个简单的Twitter自动化bot,编写为node.js应用程序。目前我在AWS中使用Cloud9来托管它,但我觉得这可能不是最有效的方法。

我需要什么:

  • 能够轻松部署机器人/代码库。
  • 多个实例,因此我可以为每个用户部署一个新实例。
  • 轻松访问日志和更新。
  • 使用情况报告。
  • 能够为用户打造前端。

我希望尽可能使用AWS来熟悉该平台,但愿意接受任何可以简化工作流程的建议。

部署新机器人的当前工作流程:

  1. 创建Cloud9 EC2实例
  2. 安装依赖项
  3. 来自存储库的Git克隆
  4. 使用用户编辑配置'访问密钥
  5. 从控制台运行bot
  6. 让后台运行
  7. 到目前为止这很容易,但我不知道它是否实用。感谢任何建议!

1 个答案:

答案 0 :(得分:1)

鉴于僵尸程序需要不断运行(即它只能在几分钟内按需旋转,排除AWS Lambda)并且每个用户都需要自己的,我就是这样。 d尝试使用AWS ECS。

您的初始设置将如下所示:

  1. 首先,create a Docker image运行您的机器人,并将其加载到ECRDocker Hub
  2. 设置ECS。我建议使用AWS Fargate,这样您就不必管理VPC和EC2实例来运行容器。您希望使用机器人Docker镜像create your task definition
  3. 使用您的任务定义根据需要运行新任务。这可以通过AWS API,AWS SDK,AWS控制台等完成。
  4. 更新僵尸程序只需更新Docker镜像和任务定义,然后重新启动任务,以便他们使用新图像。

    您也应该能够使用CloudWatch为您的ECS任务设置logging和监控/报警。

    使用情况报告取决于您要报告的确切内容。您可以从CloudWatch事件/指标获得所需的一切,或者您可能希望将容器中的数据发送到某个存储解决方案(RDS,DynamoDB,S3等)。

    将前端绑定到机器人取决于机器人的设置方式。例如,如果他们让REST服务器收听特定端口,那么如果他们在ECS上运行,您就可以点击它。