我有一个网络抓取工具,它是一个Docker Image。我想使用boto创建EC2实例,部署我的爬虫,运行爬虫,然后在完成后终止实例。
我目前的想法是:
一些细节:
phpinfo(INFO_VARIABLES);
个实例。答案 0 :(得分:1)
我的建议是创建一个简单的HTTP API并直接调用它。以编程方式进行SSH通常很尴尬。这就是我要做的事情:
实施HTTP端点以启动爬网程序。您需要一个框架来完成这项工作,例如Flask:
from flask import Flask, request, Response
# Initialize the Flask application
app = Flask(__name__)
@app.route('/api/start_crawler', methods=['POST'])
def segmentation_endpoint():
r = request
# r is now the request object. You can use it to pass additional info
# implement the starting of the crawler here
# start flask app
app.run(host="0.0.0.0", port=5000)
启动时启动docker容器。为此,请在启动实例时添加用户数据,例如:
#!/bin/bash
docker run -p 80:<PORT> <image>:<tag>
现在,您可以通过调用端点随时启动搜寻器。
要在停止时删除实例,您可以从注释中提到的/latest/meta-data/instance-id
获取实例ID,然后使用boto3,例如:
# Boto 3
import boto3
ec2 = boto3.resource('ec2')
ec2.instances.filter(InstanceIds=ids).terminate()