gpt4 book ai didi

python - AWS Boto - 启动实例、部署 Docker 镜像、运行和终止

转载 作者:太空宇宙 更新时间:2023-11-04 04:46:54 26 4
gpt4 key购买 nike

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

我目前的想法是这样的:

  • 使用包含 Docker 的 AWS 镜像启动新的 EC2 实例。
  • 使用 Fabric 之类的工具通过 SSH 连接到实例并安装 Docker 镜像。
  • 使用相同的 SSH 连接运行我的命令以启动爬虫
  • 让网络爬虫在完成时删除自己的实例。

一些细节:

  • 我真的需要使用像 Fabric 这样的工具来通过 SSH 连接到我的实例并运行命令吗?
  • 如何选择当前运行脚本的实例? self 实例(如果您愿意)。
  • 有更好的方法吗?

最佳答案

我的建议是创建一个简单的 HTTP API 并直接调用它。以编程方式进行 SSH 连接通常很尴尬。这是我会做的:

  1. 实现用于启动爬虫的 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)
  2. 在启动时启动 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()

关于python - AWS Boto - 启动实例、部署 Docker 镜像、运行和终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49363403/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com