在 AWS 中部署机器人实例

Deploying bot instances in AWS

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

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

我需要的:

如果可能的话,我想使用 AWS 来熟悉该平台,但欢迎任何关于我可以合并一个简单工作流程的建议。

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

  1. 创建 Cloud9 EC2 实例
  2. 安装依赖项
  3. Git 从存储库克隆
  4. 使用用户的访问密钥编辑配置
  5. 运行 来自控制台的机器人
  6. 将运行留在后台

到目前为止这很容易,但我只是不知道它是否实用。感谢任何建议!

鉴于机器人需要不断地 运行(即它不能只是按需启动几分钟,这排除了 AWS Lambda)并且每个用户都需要自己的,我会试试 AWS ECS。

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

  1. 首先,create a Docker image to run your bot, and load it into ECR or Docker Hub.
  2. 设置ECS。我建议使用 AWS Fargate so you don't have to manage a VPC and EC2 instances just to run your containers. You'll want to create your task definition 使用你的机器人 Docker 图片。
  3. 运行 根据需要使用您的任务定义的新任务。这可以通过 AWS API、AWS SDK、AWS 控制台等来完成

更新机器人只涉及更新您的 Docker 图像和任务定义,然后重新启动任务以便它们使用新图像。

您应该也可以使用 CloudWatch 为您的 ECS 任务设置 logging 和 monitoring/alarming。

使用情况报告取决于您想要报告的具体内容。您可能会从 CloudWatch events/metrics 获得所需的一切,或者您可能希望将数据从容器发送到某些存储解决方案(RDS、DynamoDB、S3 等)。

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