在 AWS 中部署机器人实例
Deploying bot instances in AWS
我没有使用 AWS 或生产机器人部署的经验,因此我正在寻找有关最佳实践的一些建议。
该项目是一个简单的 Twitter 自动化机器人,编写为 node.js 应用程序。目前我是使用AWS中的Cloud9来托管,但我觉得这可能不是最有效的方式。
我需要的:
- 能够轻松部署 bot/codebase。
- 多个实例,以便我可以为每个用户部署一个新实例。
- 轻松访问日志和更新。
- 使用情况报告。
- 能够为用户绑定前端。
如果可能的话,我想使用 AWS 来熟悉该平台,但欢迎任何关于我可以合并一个简单工作流程的建议。
当前部署新机器人的工作流程:
- 创建 Cloud9 EC2 实例
- 安装依赖项
- Git 从存储库克隆
- 使用用户的访问密钥编辑配置
- 运行 来自控制台的机器人
- 将运行留在后台
到目前为止这很容易,但我只是不知道它是否实用。感谢任何建议!
鉴于机器人需要不断地 运行(即它不能只是按需启动几分钟,这排除了 AWS Lambda)并且每个用户都需要自己的,我会试试 AWS ECS。
您的初始设置将如下所示:
- 首先,create a Docker image to run your bot, and load it into ECR or Docker Hub.
- 设置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 图片。
- 运行 根据需要使用您的任务定义的新任务。这可以通过 AWS API、AWS SDK、AWS 控制台等来完成
更新机器人只涉及更新您的 Docker 图像和任务定义,然后重新启动任务以便它们使用新图像。
您应该也可以使用 CloudWatch 为您的 ECS 任务设置 logging 和 monitoring/alarming。
使用情况报告取决于您想要报告的具体内容。您可能会从 CloudWatch events/metrics 获得所需的一切,或者您可能希望将数据从容器发送到某些存储解决方案(RDS、DynamoDB、S3 等)。
将前端绑定到机器人取决于机器人的设置方式。如果他们有 REST 服务器侦听特定端口,例如,如果他们 运行 在 ECS 上,您就可以点击该端口。
我没有使用 AWS 或生产机器人部署的经验,因此我正在寻找有关最佳实践的一些建议。
该项目是一个简单的 Twitter 自动化机器人,编写为 node.js 应用程序。目前我是使用AWS中的Cloud9来托管,但我觉得这可能不是最有效的方式。
我需要的:
- 能够轻松部署 bot/codebase。
- 多个实例,以便我可以为每个用户部署一个新实例。
- 轻松访问日志和更新。
- 使用情况报告。
- 能够为用户绑定前端。
如果可能的话,我想使用 AWS 来熟悉该平台,但欢迎任何关于我可以合并一个简单工作流程的建议。
当前部署新机器人的工作流程:
- 创建 Cloud9 EC2 实例
- 安装依赖项
- Git 从存储库克隆
- 使用用户的访问密钥编辑配置
- 运行 来自控制台的机器人
- 将运行留在后台
到目前为止这很容易,但我只是不知道它是否实用。感谢任何建议!
鉴于机器人需要不断地 运行(即它不能只是按需启动几分钟,这排除了 AWS Lambda)并且每个用户都需要自己的,我会试试 AWS ECS。
您的初始设置将如下所示:
- 首先,create a Docker image to run your bot, and load it into ECR or Docker Hub.
- 设置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 图片。
- 运行 根据需要使用您的任务定义的新任务。这可以通过 AWS API、AWS SDK、AWS 控制台等来完成
更新机器人只涉及更新您的 Docker 图像和任务定义,然后重新启动任务以便它们使用新图像。
您应该也可以使用 CloudWatch 为您的 ECS 任务设置 logging 和 monitoring/alarming。
使用情况报告取决于您想要报告的具体内容。您可能会从 CloudWatch events/metrics 获得所需的一切,或者您可能希望将数据从容器发送到某些存储解决方案(RDS、DynamoDB、S3 等)。
将前端绑定到机器人取决于机器人的设置方式。如果他们有 REST 服务器侦听特定端口,例如,如果他们 运行 在 ECS 上,您就可以点击该端口。