首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AWS Boto启动实例,部署Docker映像,运行和终止

AWS Boto启动实例,部署Docker映像,运行和终止
EN

Stack Overflow用户
提问于 2018-03-19 12:48:49
回答 1查看 1.5K关注 0票数 2

我有一个网络爬虫,是一个码头形象。我想使用boto创建一个EC2实例,部署我的爬虫,运行这个爬虫,然后在它完成后终止这个实例。

我现在的想法是:

  • 使用包含Docker的AWS启动新的EC2实例。
  • SSH在实例中使用类似Fabric的内容并安装Docker。
  • 使用相同的SSH连接来运行我的命令来启动爬虫
  • 使Web在完成时删除自己的实例。

以下是一些细节:

  • 我真的需要使用像Fabric这样的工具来对我的实例进行SSH并运行命令吗?
  • 如何选择当前运行脚本的实例?如果您愿意,可以使用self实例。
  • 有更好的方法吗?
EN

回答 1

Stack Overflow用户

发布于 2018-03-19 13:04:58

我的建议是创建一个简单的HTTP并直接调用它。以编程方式进行SSH-ing通常是很尴尬的。以下是我要做的事:

  1. 实现用于启动爬虫的HTTP端点。要做到这一点,您需要一个框架,例如,像Flask这样的东西: 从烧瓶导入烧瓶、请求、响应#初始化Flask应用程序=__name__(@app.route) @app.route('/api/start_crawler‘),方法=’POST‘) def segmentation_endpoint():r=请求#r现在是请求对象。您可以使用它传递附加信息#在这里实现爬虫的启动# start烧瓶应用程序app.run(host="0.0.0.0",port=5000)
  2. 在启动时启动码头容器。为此,在启动实例时添加用户数据,例如:#!/bin/bash docker run -p 80:<PORT> <image>:<tag>

现在,您可以通过调用端点来启动爬行器。

要在停止时删除实例,可以像注释中提到的那样从/latest/meta-data/instance-id获取实例id,然后使用boto3,例如:

代码语言:javascript
运行
复制
# Boto 3
import boto3
ec2 = boto3.resource('ec2')
ec2.instances.filter(InstanceIds=ids).terminate()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49363403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档